§ journal des versions

Ce qui est livré, et quand.

Les dates sont celles où le travail a été intégré, non celles où il était prévu. Tout ce qui est fusionné sans être déployé le dit, parce qu'un journal qu'il faut nuancer soi-même vaut moins que pas de journal du tout.

  1. Lieux, et les champs que nous n'avons paspas encore en ligne

    /places/search, /places/nearby et /places/{id} sur les points d'interet que le corpus de geocodage porte deja. /geocode/nearby est inchange. Le plan demande des numeros de telephone et des horaires d'ouverture; nous ne les avons pas, ils sont donc absents de la reponse plutot que nuls.

    • /places/search retourne des lieux, la ou /geocode/search retourne ce qui correspond le mieux, et pour Calgary c'est la ville
    • /places/{id} est une capacite nouvelle et non un changement de nom: le geocodeur n'avait aucune recherche par identifiant, donc un client qui conservait un resultat ne pouvait pas le rafraichir
    • Un identifiant malforme donne un 404, pas un 400. Du cote de l'appelant c'est la meme reponse, et les distinguer revelerait notre type de stockage dans le contrat
    • Les noms reviennent dans chaque langue du corpus, y compris le syllabaire la ou une source l'a consigne
    • Aucune deduplication entre sources: le corpus fusionne les localites, pas les commerces, donc une chaine presente dans deux sources peut encore apparaitre deux fois

    Ce que nous avons trouve en cherchant des donnees de transport en commun canadiennespas encore en ligne

    Le pipeline GTFS est construit: telechargement, validation, mise en quarantaine, controle de licence, archivage, mesure de capacite. Nous l'avons execute sur huit agences. Une seule des huit est a la fois libre de droits et ingerable, ce que personne n'avait prevu, et c'est pourquoi ceci est un rapport plutot qu'un lancement.

    • Aucun point d'acces de transport en commun n'est livre ici. /coverage.json presente toujours le transport en commun comme planifie, et liste desormais les flux avec ce qui cloche pour chacun
    • Un flux n'est jamais decompresse sans licence consignee. BC Ferries ne publie aucune condition que nous ayons pu trouver, donc il n'a aucune entree au registre, et c'est cette absence qui le refuse
    • TransLink et la STM sont retenus par leurs conditions, non par la technique. Vancouver et Montreal n'auraient aucune couverture meme une fois le transport en commun livre, et la raison est ecrite
    • Les deux flux de Metrolinx ne publient aucun calendar.txt. Le moteur de routage ecarte ces flux en silence: une construction incluant GO Transit reussirait sans contenir aucun de ses services
    • Les archives de flux et les rapports de validation sont conserves dans R2 par date et par empreinte, car une agence remplace son flux sur place et celui de la semaine derniere disparait

    Fermetures de routes, pour une provincepas encore en ligne

    GET /incidents, /closures et /road-conditions sur le flux Open511 de DriveBC. Une province sur treize, et la raison en est que 511 Alberta exige une cle d'API que personne n'a demandee.

    • Interroge en direct derriere un cache de 60 secondes, non ingere: un evenement routier vieux d'une heure ne vaut rien, et un instantane en cache cache son propre age
    • Une fermeture signifie que le producteur a dit ferme. La categorie de l'evenement dit pourquoi une route est touchee, jamais si elle est fermee, et plusieurs evenements de chantier decrivent de breves fermetures en prose tout en declarant toutes les voies ouvertes
    • La description du producteur revient mot pour mot. Nos categories sont une projection avec perte des siennes, et la phrase dont un conducteur a besoin est dans la prose
    • Quand une juridiction est injoignable, la reponse dit laquelle et pourquoi au lieu de retourner une liste vide: sur un point d'acces de fermetures, une liste vide se lit comme rien n'est ferme
    • Le routage n'evite pas les fermetures. Rien dans /route n'est encore affecte

    Signaler un résultat erronépas encore en ligne

    POST /feedback dépose un signalement de correction de données pour n'importe quel produit, et chaque exemple en direct de la documentation porte maintenant un contrôle qui en ouvre un. Authentifié comme tout le reste et jamais facturé : nous dire que nos données sont fausses ne doit pas vous coûter un appel.

    • POST /feedback, et POST /places/{id}/feedback pour un signalement portant sur un seul lieu
    • Votre requête n'est jointe que si vous cochez la case. L'API refuse un context sans include_context: true plutôt que de l'abandonner en silence, et la boîte de dialogue vous montre d'abord les octets exacts
    • Dix catégories, réduites à celles qui ont du sens pour le produit signalé, et un champ libre conservé exactement tel que vous l'écrivez
    • Les signalements aboutissent à l'un de sept états. upstream en est un vrai : une bonne part de ce qui est signalé est fidèlement ingéré d'un fichier provincial qui est lui-même faux
    • 200 signalements par compte et par jour. Aucun moyen de relire vos signalements pour l'instant, ce qui est une lacune et est documenté comme telle
  2. Pourquoi Victoria était un hameaupas encore en ligne

    Chercher une capitale provinciale par son nom retournait un autre endroit du même nom. La cause était une erreur d'unité dans les chargeurs, présente dans le corpus depuis la toute première construction, et la trouver a exigé de bâtir le banc d'essai national qui la surveille désormais.

    • Victoria, Fredericton, Charlottetown, Kingston, Windsor et Waterloo retournent la ville que vous visiez
    • Un banc d'essai de 4 032 requêtes couvrant les treize juridictions, stratifié par province, taille d'agglomération, langue et type de requête, s'exécute à chaque modification du géocodeur
    • Un nombre en tête de requête signifie désormais une recherche d'adresse, avec une exception pour les relais de la Cariboo qui portent le nom de leur kilométrage
    • /coverage.json et unmap.dev/coverage sont générés depuis un registre de sources plutôt qu'écrits à la main : la page ne peut pas annoncer une capacité sans jeu de données derrière

  3. Les itinéraires à vélo et à pied connaissent les côtespas encore en ligne

    Le graphe canadien est reconstruit sur notre propre modèle altimétrique national à 30 m : chaque arête porte une pente et les temps à vélo et à pied tiennent compte de la montée. Les temps en voiture ne changent pas : le calcul de coût auto et camion de Valhalla n'a aucun terme de pente, et c'est pourquoi use_hills renvoie un 400 sur ces modes plutôt que de ne rien faire.

    • les durées et isochrones bicycle et pedestrian tiennent compte du relief, sans aucun paramètre
    • use_hills de 0 (éviter les montées même au prix d'un détour) à 1 (indifférent), sur bicycle et pedestrian seulement
    • Les pentes viennent du MRDEM-30 de RNCan, à 30 m jusqu'à 85 degrés nord, le modèle même que les styles outdoor ombrent; SRTM, qu'utilisent la plupart des moteurs, s'arrête à 60
    • Aucun profil altimétrique dans la réponse et aucun point d'accès de hauteur : cela exigerait les données d'altitude dans le conteneur de service, et elles n'y tiennent pas
  4. Une préférence pour l'autoroute, sans second moteurpas encore en ligne

    use_highways sur /route et /isochrone est l'option de coût auto et camion que Valhalla possède déjà, appliquée au graphe OSM du Canada. Le routage industriel et éloigné reste expérimental : pas de graphe de routes de glace, pas de coût pour les chemins d'exploitation.

    • use_highways de 0 (éviter autoroutes et voies rapides) à 1 (préférer), sur auto, car et truck seulement
    • bicycle et pedestrian rejettent l'option par un 400 qui nomme les modes autorisés
    • La documentation de /docs/routing-api et /docs/coverage dit ce que le graphe ne modélise pas
  5. Tamarack, et le quatrième caractère

    Un seizième préréglage de thème, le mélèze doré qui manquait à la série : la nature est un vert dans toutes les palettes précédentes. C'est aussi le premier préréglage qui coûte un quatrième caractère. Les codes existants ne changent pas.

    • tamarack : feuillage doré, un accent violet froid, seul occupant de la plage de teintes 210 à 320
    • L'indice de préréglage 15 s'encode u10S sur base; tous les préréglages antérieurs gardent leur code à trois caractères
  6. Le MNA s'estompe à sa limite au lieu d'y tomber

    Le MRDEM suit les bassins versants : sa couverture s'arrête net, d'où une falaise d'ombrage le long de la frontière américaine et dans les fjords, là où les données s'interrompaient. L'archive a été reconstruite pour que l'altitude redescende doucement au niveau de la mer sur les 20 derniers kilomètres de couverture, et l'ombrage avec elle.

    • canada-dem.pmtiles reconstruite sur place à partir du COG MRDEM-30 local le 2026-09-09 (1,13 M de tuiles, z0 à 12, 39,9 Go); les styles émettent désormais /terrain/4/
    • L'exagération de l'ombrage suit le zoom dans chaque style : douce à z5, maximale à z13, nulle à z16
    • Le débordement de couverture au sud de la frontière n'est toujours pas une couverture des États-Unis; il est simplement moins visible

    Une carte peut être un globe

    Passez projection: "globe" et la carte se dessine en sphère. Omettez-le et rien ne change. unmap tuile le Canada : aux échelles du globe, le pays repose sur la sphère et tout ce qui déborde de l'archive reste vide.

    • createMap, new Unmap, useUnmap, <Map>, et les deux voies du registre
    • Un centre-ville sans zoom cadre toujours la ville, pas la planète
    • Un exemple en direct à /docs/examples/show-the-globe

    Déposez un logo, obtenez un thème

    Le mode simple de la page create accepte une image. Déposez, collez ou choisissez un logo et les quatre germes proviennent de sa palette; glissez une poignée sur une couleur pour corriger un choix.

    • PNG, JPEG, WebP ou GIF, extraits dans le navigateur
    • La carte se met à jour à mesure que vous attribuez chaque germe

    Toute carte a des boutons de zoom

    Une carte sans affordance de zoom est une carte qu'un visiteur sans habitude de défilement ne peut pas déplacer. Les boutons de zoom et la boussole sont maintenant actifs par défaut, partout, restylés selon le système de design où la carte se trouve.

    • createMap, new Unmap, useUnmap, les composants React et Vue et les deux voies du registre les reçoivent sans rien demander
    • controls: false pour un canevas nu; controls: { position: 'bottom-left' } pour les déplacer
    • rayon nul, filets fins, aucune ombre, et les glyphes s'inversent en mode sombre

    Sept préréglages de thème qui ne se ressemblent en rien

    Les préréglages nommés de la page create étaient tous des paysages en demi-teinte. Sept nouveaux poussent chacun une idée aussi loin que le générateur le permet : magma, neon, candy, ultraviolet, noir, sepia et ultramarine. Tous franchissent les seuils de contraste des étiquettes sur les douze styles.

    • magma : eau de lave, nature olive brûlée, terre de cendre chaude, un accent soufre
    • neon : eau cyan électrique, nature vert acide, dominante violette, rose vif
    • candy : eau bubble-gum, nature turquoise, dominante rose, citron
    • ultraviolet : eau violet profond, nature prune, accent lime
    • noir : aucune couleur nulle part, sauf un accent rouge
    • sepia : noyer, eau couleur thé, nature ocre, sang de bœuf
    • ultramarine : eau outremer, nature bleu-sarcelle, accent corail
    • Le fichier map-themes du registre les nomme : MAP_THEMES.magma et ainsi de suite

    Quatre styles éclatants : tropic, sunset, bold, pastel

    Douze styles désormais. Les quatre nouveaux s'inspirent de CARTOColors et dépensent leur couleur sur l'eau, la végétation et l'autoroute pendant que la terre et les étiquettes restent discrètes, pour que vos propres données l'emportent toujours par-dessus.

    • tropic : eau sarcelle à pleine intensité, parcs vert tendre, terre crème, une autoroute corail
    • sunset : un duotone chaud, terre crème, végétation pêche, routes corail et eau indigo; crépuscule en mode sombre
    • bold : la carte routière saturée, eau bleu franc, parcs vert feuille, bois émeraude et autoroute ambre
    • pastel : terre lavande-blanc, eau pervenche, parcs menthe, une autoroute saumon
    • Chacun fonctionne partout où un nom de style est accepté, et les codes de thème u09 à u0C les nomment sur la page create et dans le registre

    decimal retiré; routes et couverture du sol se lisent comme une seule carte

    Huit styles désormais. decimal, le style vert monochrome, se lisait comme la même carte que blueprint et disparaît; ses noms continuent de résoudre. Deux correctifs touchent tous les styles : les voies rapides se dessinent à la largeur de l'autoroute, si bien que la route 2 ne se fragmente plus aux zooms intermédiaires, et la couverture du sol de bas zoom passe le relais à la teinte de zoom moyen sans se dénuder entre z6 et z7.

    • flavor=decimal, decimal-light et decimal-dark pointent vers blueprint; le code de thème u03 décode en blueprint et u04 reste blueprint
    • roads_trunk rejoint chaque style entre les grandes routes et l'autoroute, dans le ton de liaison de la variante et à la largeur de l'autoroute
    • Le remplissage de couverture du sol d'origine tient jusqu'à z6 puis rejoint l'opacité du champ de couverture à z7 au lieu de disparaître

    Relief et courbes de niveau passent à l'échelle nationale

    L'ombrage et les courbes de niveau derrière outdoor se limitaient aux douze feuillets CDEM de RNCan autour de Calgary, Montréal et Iqaluit. Ils sont nationaux : le MRDEM à 30 m de RNCan, tuilé jusqu'à z12 et surzoomé au-delà, atteint l'archipel arctique; les courbes suivent la même étendue de z9 à z13. La source suit les bassins versants, donc la couverture déborde un peu au sud de la frontière. Ce débordement n'est pas une couverture des États-Unis.

    • canada-dem.pmtiles a été reconstruite sur place à partir du MRDEM-30 le 2026-09-08 (z0 à 12, encodage terrarium, 1,13 M de tuiles); l'archive à douze feuillets a disparu
    • canada-contours.pmtiles a suivi le 2026-09-09, découpée par fenêtre de z9 à z13 (auparavant z9 à z14) à la même étendue nationale
    • Les styles émettent désormais /terrain/3/... et /contours/3/... : le segment de version de l'archive bouge avec une reconstruction, de sorte que les tuiles en cache sous l'ancien chemin ne sont jamais servies comme la nouvelle archive
  7. MapLibre GL JS 6, et les paquets en 0.7.0

    @unmap/maps passe à MapLibre GL JS 6 et prend maplibre-gl comme dépendance de pair : une application qui utilise aussi MapLibre directement n'en obtient qu'un exemplaire, pas deux. @unmap/sdk en dépend toujours directement, donc npm i @unmap/sdk reste une carte qui fonctionne sans rien d'autre à installer.

    • import { maplibregl } from "@unmap/maps" est inchangé; la v6 est ESM seulement, exige WebGL2, et l'exemple sans outil de construction de la documentation est maintenant un script de module
    • Le guide de démarrage explique la carte grise qui ne se peint jamais sous Turbopack : MapLibre exige un setWorkerUrl() unique, et les deux fichiers de travailleur doivent être copiés
    • La documentation renvoie à la référence de MapLibre pour l'API de carte, et dit où s'arrête la documentation d'unmap et où commence celle de MapLibre
    • La clé de démonstration est masquée dans toutes les réponses affichées sur le site, et les cartes intégrées laissent un doigt faire défiler la page sur écran tactile

    unmap se décrit aux agents

    Un outil ou un agent peut désormais trouver, comprendre et appeler l'API sans qu'une personne lise d'abord la documentation. Chacune des surfaces ci-dessous est servie depuis le site, depuis l'hôte de l'API, ou les deux, et documentée sous /docs/agents.

    • OpenAPI 3.1 à api.unmap.dev/openapi.json, un catalogue RFC 9727 à /.well-known/api-catalog sur les deux hôtes, et /auth.md qui explique comment obtenir une clé (par un humain; il n'y a pas d'auto-inscription)
    • Un serveur MCP à api.unmap.dev/mcp : Streamable HTTP, cinq outils en lecture seule (recherche, géocodage inverse et à proximité, itinéraire, isochrone), authentifié, limité en débit et facturé comme tout autre client
    • Une carte d'agent A2A à /.well-known/agent-card.json avec un vrai point d'accès POST /a2a derrière; un appel de compétence est facturé une seule fois, comme l'appel REST qu'il représente
    • Un 401 porte maintenant un défi WWW-Authenticate et pointe vers les métadonnées de ressource protégée de la RFC 9728, qui ne listent aucun serveur d'autorisation parce qu'unmap n'en exploite aucun
    • Quatre Agent Skills (démarrage, géocodage, routage, styles de carte) avec un index vérifié par empreinte à /.well-known/agent-skills
    • Chaque page de documentation est servie en Markdown sur Accept: text/markdown, avec les contrôles Copier la page et Copier l'invite d'agent sur la page
    • Quatre outils WebMCP enregistrés dans le navigateur sur chaque page : chercher dans la documentation, lire une page en Markdown, ouvrir une page, lister les styles

    Les codes de thème courts portent les couches masquées et réordonnées

    Un style dont un groupe de couches était masqué retombait auparavant sur un document ut1. de 118 caractères. Le code court empaquette désormais les sept interrupteurs de visibilité et l'ordre de tracé en quelques caractères de plus : un style vaut u00 et suivants, un préréglage nommé trois caractères, et un style avec un groupe masqué six.

    • Les codes imprimés avant aujourd'hui ne décodent plus : réexportez depuis unmap.dev/create, ou réinstallez map-themes pour les nouveaux codes de préréglage
    • ut1. ne sert plus qu'aux couleurs modifiées à la main; tout ce que le mode simple et le panneau de couches peuvent produire est un code court

    unmap create, et un registre natif shadcn dans les deux voies

    npx @unmap/cli create my-app échafaude un projet shadcn ou shadcn-vue avec les composants de carte installés, votre clé dans le fichier d'environnement et une page de démonstration qui s'affiche. Dessous, le registre a été reconstruit pour donner l'impression de shadcn à ceux qui y vivent, et aucun élément ne porte de valeur de marque unmap.

    • L'installation est npx shadcn add @unmap/map en React et npx shadcn-vue add en Vue, après une entrée registries dans components.json; unmap add écrit cette entrée et passe la main au bon outil
    • La voie Vue est du shadcn-vue véritable : un répertoire par élément, le Combobox, le Field, l'Input, le Button et l'Alert du client, pour que shadcn-nuxt importe automatiquement <UiUnmapMap>
    • Marqueurs, itinéraires, infobulles et contrôles de carte suivent les jetons du client; <Map accent="theme" | "system"> dit qui l'emporte du code de thème ou du système de design
    • Le groupe fixe de paquets est sorti en 0.5.0
  8. Aéroports, gares, quartiers et les autres noms que les gens emploient

    Le corpus de géocodage a été reconstruit avec les enregistrements qui manquaient et les noms que les enregistrements ignoraient. YYC mène à l'aéroport de Calgary, le Vieux-Montréal se trouve enfin, et un lieu répond à ses noms courts et familiers.

    • Aéroports et gares d'OSM, avec les catégories airport et train_station pour /geocode/nearby, et les codes IATA comme noms cherchables
    • Quartiers, arrondissements et campus de Who's On First
    • Noms alternatifs de Who's On First et d'OSM, retournés comme clés supplémentaires dans names et indexés pour la recherche
    • Une échelle de notoriété pour les points d'intérêt : un aéroport ou une salle dotée d'une fiche Wikidata l'emporte sur une remise du même nom

    Documentation : recherche, table des matières, et une page pour appeler l'API sans les paquets

    Appeler l'API directement documente tout le contrat en HTTPS et JSON ordinaires : le point d'accès racine sans clé, un programme géocodage-puis-itinéraire en curl, fetch et Python, et une page MapLibre d'origine. Le reste de la documentation a reçu le mobilier qu'une référence exige.

    • Recherche plein texte dans les deux langues, depuis la barre latérale ou ⌘K
    • Onglets de code : npm, pnpm, yarn et bun sur chaque bloc d'installation, un jumeau fetch pour chaque exemple curl, et le choix mémorisé d'une page à l'autre
    • Une table des matières sur écran large qui suit le titre que vous lisez
  9. Le géocodage classe ce que vous avez nommé, pardonne une faute de frappe et répond à trois lettres

    Un banc d'essai contre le corpus de production a trouvé les cas où un enregistrement plausible l'emportait sur celui que l'appelant avait tapé, et une journée de correctifs côté requête en a refermé la plupart. Château Frontenac retourne le château, Rogers Place retourne l'aréna, Calgery retourne Calgary.

    • Un enregistrement dont vous avez tapé le nom complet atteint toujours le bassin de candidats : une localité ne peut plus l'emporter sur ce qu'elle contient
    • Une province ou un pays en fin de requête est un biais, non un jeton, et une province nommée exactement bat une localité du même nom
    • Une recherche vide est retentée avec une tolérance d'un caractère; une recherche avec une bbox n'est jamais approximée
    • Les noms s'apparient sans accents, trait d'union et espace sont équivalents, St. vaut Saint, et les abréviations de province peuvent porter des points
    • L'autocomplétion de trois caractères ou moins répond par les lieux les plus notoires plutôt que par une centaine d'adresses arbitraires

    La dernière page uniquement anglaise parle français

    /why est servie dans les deux langues depuis une seule enveloppe de page, comme les pages légales, de sorte que les deux ne peuvent pas diverger en mise en page.

  10. La documentation s'exécute sur la page

    Le guide de démarrage est une seule application construite en sept étapes, de la carte au lieu à l'épingle à l'itinéraire au thème, chacune montrée en train de s'exécuter contre api.unmap.dev à côté du code exact qui l'a produite. Un exemple en direct n'imprime que les options qu'on lui a données, si bien que la première carte tient démontrablement en deux instructions.

    • Des exemples en direct sur les pages d'API aussi, et les corps d'erreur montrés sont ceux que la passerelle envoie
    • Une carte n'est pas demandée avant que son exemple n'entre dans le champ de vision
    • Un bouton de copie sur chaque bloc de code, et la coloration Shiki sur les extraits générés

    Les conditions et la politique de confidentialité sont définitives

    Les deux documents cessent d'être des ébauches, en anglais et en français du Canada. Le texte de facturation des conditions correspond maintenant à ce que fait le code, et la politique de confidentialité nomme un responsable de la protection de la vie privée à privacy@unmap.dev, avec un tableau de conservation tiré des durées réelles.

    • Le droit applicable est celui de l'Alberta, avec une voie de règlement par la discussion d'abord, un plafond de responsabilité, une indemnisation mutuelle et un préavis de 30 jours pour tout changement important
    • Droits prévus par la LPRPDE et la Loi 25, suppression de compte avec l'exception de sept ans pour la facturation, et sauvegardes de 35 jours
    • La tarification compte la requête, non le chargement de carte, et la page le dit

    Les anciens noms de style résolvent de nouveau

    Le changement de styles du 2026-09-03 envoyait tous les alias (light, dark, street, relief, les noms Protomaps d'origine) et l'ancienne forme /styles/{city}.json?flavor= vers un 404. Les URL de style sont codées en dur chez les clients : le chemin résout de nouveau les alias et conserve le cadrage d'une ville de démonstration.

    • @unmap/routing 0.4.0 porte les modes truck et car dans ses types
  11. Le routage camion, et car comme orthographe d'auto

    mode=truck sur /route et /isochrone exécute le calcul de coût camion de Valhalla sur le graphe canadien avec un profil de véhicule validé. Un mode non reconnu donne un 400 qui nomme les valeurs permises, et car est accepté aux côtés d'auto.

    • height, width, length, weight, axle_load, axle_count, hazmat et use_truck_route, chacun validé en plage et rejeté sur tout autre mode
    • La documentation dit ce que les données de restriction d'OSM couvrent et ne couvrent pas, et que ceci n'est pas une vérification de permis
    • Le transport en commun n'est pas exposé; l'étude de faisabilité derrière cette décision est dans le dépôt

    Des groupes de couches dans les thèmes, et un panneau de couches dans le créateur

    Un thème peut masquer ou réordonner sept groupes de couches : terre, eau, bâtiments, routes, limites, bâtiments 3D et étiquettes. Le créateur reçoit un panneau de couches avec un œil et des flèches haut et bas par groupe.

    • Les bâtiments 3D composent une couche fill-extrusion à partir des hauteurs des tuiles lorsqu'ils sont activés

    Une voie Vue pour le registre, et unmap add

    registry.unmap.dev sert les quatre mêmes primitives pour Vue à /r/vue, et npx @unmap/cli add <item> installe dans l'un ou l'autre type de projet. Cette voie a été reconstruite sur shadcn-vue le 2026-09-07.

    • Carte, marqueur et infobulle, géocodeur et panneau d'itinéraire, en Vue avec provide/inject là où React utilise Context

    Six nouveaux styles, et muted est monochrome pour de vrai

    Neuf styles désormais. decimal et blueprint rejoignent base, muted et outdoor; blush, orchid, canopy et lagoon suivent quatre variantes Protomaps réécrites sur les rampes d'unmap pour que leurs étiquettes franchissent les seuils de contraste. muted est un vrai niveau de gris, eau et icônes comprises, et base suit une palette routière conventionnelle. Chaque style existe en clair et en sombre.

    • Les neuf noms fonctionnent partout où un nom de style est accepté : le point d'accès des styles, le SDK, la page create et le registre
    • Le vocabulaire est style et thème : un style est l'une des neuf cartes structurelles, un thème est un traitement de couleur appliqué à l'une d'elles

    Des préréglages de thème courts, à la manière du b0 de shadcn

    Un style ou un thème s'encode en un code de trois caractères, u00 et suivants, et ne s'allonge que lorsque vous quittez la série choisie. Les préréglages nommés vivent dans le registre sous map-themes : une application les installe une fois et passe MAP_THEMES.boreal.

    • npx shadcn add @unmap/map-themes installe des constantes nommées pour les styles et les huit préréglages de thème
    • La boîte d'exportation de la page create propose trois suites : nouveau projet, projet existant, et le code lui-même

    Les paquets sont correctement sur npm : React et Next, une seule version, un README chacun, et une licence

    Deux nouveaux paquets apportent les trois mêmes crochets à React et un <Map> prêt à l'emploi au routeur App de Next.js. Chaque paquet porte maintenant le même numéro de version, un README que npm affiche, des métadonnées qui renvoient à la documentation, et une licence MIT.

    • @unmap/react : useUnmap, useGeocoder et useDirections plus UnmapProvider, avec key écrit apiKey; @unmap/next : un <Map> "use client" qu'une page de composant serveur peut afficher
    • Une seule version pour toute la famille : les onze paquets publiables forment un groupe fixe de changesets
    • Les crochets acceptent n'importe quel lang, @unmap/next déclare sa plage de pair Next, et « clé publiable » devient « clé d'API » partout

    La documentation dit ce que fait l'API, et deux erreurs de l'API sont corrigées

    Chaque page de la documentation destinée aux développeurs a été vérifiée ligne par ligne contre la passerelle, les conteneurs et l'API en ligne, en anglais et en français. L'audit a aussi révélé deux défauts qu'il valait mieux corriger que documenter.

    • L'autocomplétion prend toute la boîte de saisie : chaque mot sauf le dernier doit correspondre, le dernier étant le préfixe en cours de frappe. « Calgary Tow » trouve la tour de Calgary
    • Les isochrones sont plafonnées à quatre contours d'au plus 120 minutes, par un 400 qui nomme la règle, là où cinq contours échouaient auparavant en 502 opaque
    • Nouvellement documentés : /geocode/nearby avec la table complète des catégories, ?theme= et son 400, /terrain et /contours, la forme du document de style, ce qui compte comme un appel facturé, et l'allure d'un blocage de forfait
    • 0.1.0 sur npm pour core, maps, geocoding, sdk et vue : lang, mode, theme et nearby() sont installables, pas seulement documentés
  12. Le relief existe : relief a ses montagnes, et outdoor rejoint la série

    Le style relief est sorti avec des tons de terre relevés pour un ombrage qui n'existait pas encore. Il existe désormais, sous forme d'un MNA bâti à partir de douze feuillets CDEM de RNCan autour de Calgary, Montréal et Iqaluit, et un cinquième style, outdoor, s'appuie dessus avec courbes de niveau et sentiers.

    • canada-dem.pmtiles (z0 à 12, encodage terrarium) servie depuis /terrain, MapLibre surzoomant la source z12 au-delà de ce niveau
    • canada-contours.pmtiles sert les courbes d'outdoor de z9 à z14
    • Ombrage et courbes couvrent ces douze feuillets aujourd'hui; en dehors, relief et outdoor s'affichent à plat
    • flavor=outdoor fonctionne partout où flavor= fonctionne : le point d'accès des styles, le SDK et le créateur de thèmes

    Le créateur de thèmes : unmap.dev/create

    Composez un thème de carte visuellement et emportez-le sous forme d'un code compact. Le mode simple prend terre, eau, nature et un accent, puis dérive toutes les couleurs de la carte en paire claire et sombre qui garde les étiquettes lisibles. Le mode avancé expose les quelque 68 emplacements de couleur.

    • Huit préréglages de thème nommés d'après des paysages canadiens, et un brassage qui distribue un trio aléatoire au contraste vérifié
    • Les thèmes sont des données, jamais du code : couleurs hexadécimales, nombres bornés et une énumération, validés à la passerelle
    • Un seul code ut1. pilote tout : /styles/:city?theme=, new Unmap({ theme }), et le <Map theme=...> du registre
    • Une session du créateur est une URL partageable
  13. Le géocodage apprend les catégories

    Un point d'accès /geocode/nearby avec filtre par catégorie et tri par distance, adossé à une taxonomie de 89 catégories aux alias anglais et français, de sorte que ?category=boulangerie fonctionne depuis un simple curl. Le corpus reconstruit qui porte la colonne de catégorie est entré en service le 2026-09-03.

    • 89 identifiants de catégorie avec alias bilingues insensibles aux accents, résolus à la passerelle
    • nearby() dans @unmap/geocoding aux côtés de search, autocomplete et reverse

    Les paquets sont sur npm

    npm i @unmap/sdk se résout. La première ligne du guide de démarrage fonctionne contre le vrai registre.

    • @unmap/sdk 0.0.3, avec vue et nuxt à ses côtés; core, maps et cli en 0.0.1
    • @unmap/geocoder et @unmap/router ont été renommés @unmap/geocoding et @unmap/routing; les publications 0.0.1 sous les anciens noms ne sont pas maintenues
  14. Comptes, tableau de bord et facturation à l'usage

    La connexion, les clés en libre-service, l'usage et la facturation sont en ligne. Vous pouvez créer une clé depuis le tableau de bord, fixer un plafond de dépense et passer d'un forfait libre-service à un autre.

    • Connexion par lien magique et par GitHub, sur sessions en témoins
    • Émission, nommage et révocation de clés en libre-service
    • Application des quotas, des plafonds de dépense et des origines de production dans le chemin de requête
    • Paiement Stripe, portail client, webhooks, et usage transmis aux compteurs de facturation

    Le site parle français

    Chaque page sous /fr est un miroir littéral de son équivalent anglais, pilotée par un seul dictionnaire typé.

    • Un sélecteur de langue qui reste sur la page équivalente au lieu de vous ramener à l'accueil
    • Des alternatives hreflang pour les deux langues

    registry.unmap.dev est en ligne

    Le registre de composants est servi depuis son propre domaine, de sorte que l'outil shadcn peut installer les composants unmap directement dans votre projet.

    • npx shadcn add @unmap/map se résout contre le registre
  15. Cartes de partage et métadonnées pour robots

    Les liens vers unmap.dev se déploient en véritable carte plutôt qu'en URL nue.

  16. Les réponses de géocodage sont mises en cache en périphérie

    Les requêtes répétées reçoivent leur réponse depuis la périphérie plutôt que depuis le conteneur, ce qui fait l'essentiel de la différence entre une autocomplétion rapide et une lente.

    • Les succès de cache sont signalés dans la réponse
    • Les erreurs ne sont plus mises en cache : un incident cesse d'être persistant
  17. La construction du géocodage est plus rapide

    Trois changements à la chaîne de chargement retranchent un temps considérable d'une reconstruction complète du Canada.

    • search_text est calculé au moment de l'extraction, ce qui élimine un UPDATE sur toute la table
    • Les index sont construits après le chargement en masse, non pendant
    • Les extraits sources sont vérifiés puis chargés par COPY plutôt qu'insérés ligne par ligne
  18. Plaque et magenta

    Le site a été rebâti sur une identité de plaque d'imprimerie : rayon nul, aucune ombre, filets fins, typographie d'interface à chasse fixe, et un seul accent magenta.

    • Une marque de 8 sur 8 pixels et un logotype dessiné sur une grille de 5 sur 8
  19. unmap.dev sur Cloudflare Workers

    Le site a rejoint la plateforme dont il parle : un seul fournisseur, un seul déploiement.

  20. api.unmap.dev, et une cartographie qui nous appartient

    La passerelle a obtenu son propre domaine, et les cartes ont cessé d'emprunter l'allure ou l'hébergement d'actifs de quiconque.

    • Les styles unmap light, dark et street
    • Glyphes et sprites servis depuis notre propre R2, syllabaire compris
    • Les conteneurs geocode et Valhalla gardés chauds par tâche planifiée, contre les démarrages à froid
  21. Classement du géocodage

    Un classement en deux étapes a rétabli le chemin rapide Top-K de pg_search : le calcul de score ne coûte plus un balayage complet.

  22. Les conteneurs démarrent depuis R2

    Quelque 12 Go de données intégrées à l'image n'atteignaient jamais le PID 1 : l'image d'exécution du géocodage est désormais légère et la base est diffusée depuis R2 au démarrage.

    • La télémétrie de démarrage est expédiée vers R2 : une panne de conteneur devient observable au lieu d'être silencieuse
  23. Le géocodage couvre tout le Canada

    Le jeu de données est passé d'un extrait d'échantillon à une couverture nationale, déployée sur toutes les provinces.

    • Adresses et points d'intérêt d'OSM, OpenAddresses pour toutes les sources ca/, ODA de Statistique Canada pour chaque province
    • Who's On First pour les noms administratifs, avec des tables de noms multilingues
  24. Les routes ont perdu leur préfixe /v1

    La passerelle sert /tiles, /styles, /geocode/*, /route et /isochrone à la racine. Un préfixe de version qui n'a jamais livré de v2 n'allait jamais qu'être mal tapé.

    • @unmap/gl est devenu @unmap/maps, @unmap/tiles est devenu @unmap/core
    • Le graphe de routage Valhalla se construit et se vérifie depuis un extrait canadien
  25. Les paquets, le registre et le site

    La moitié de la plateforme tournée vers les développeurs est arrivée d'un seul tenant : les paquets, un registre de composants à la manière de shadcn, et unmap.dev avec démonstration en direct, documentation et tarification.

    • @unmap/core, maps, geocoder, router, sdk, vue, nuxt et cli; geocoder et router ont été renommés le 2026-09-01
  26. Clés, limites de débit et compteurs d'usage

    La passerelle a cessé d'être ouverte. Les clés vivent dans KV, les limites s'appliquent par clé, et chaque appel est compté.

    • Clés um_live_ et um_test_, à portée limitée et renouvelables
    • Limitation de débit par clé, répondant 429 avec Retry-After
  27. Premières cartes

    Un extrait canadien de la construction planétaire Protomaps, servi depuis R2 par un Worker Hono sur Cloudflare. Les tuiles ne touchent jamais au calcul : ce sont des lectures par plage depuis le stockage objet, avec le cache du Worker devant.

    • Bâti sur Protomaps plutôt que sur OpenMapTiles, pour que les tuiles portent l'attribution propre d'unmap