Skip to content

Changelog⚓︎

3.7.3 - 2026-04-08⚓︎

  • cloning a map should adapt layer parents by @yohanboniface in #3282
  • add missing semicolon so that nginx is running out of the box with docker by @tpummer in #3280

New Contributors⚓︎

3.7.2 - 2026-04-07⚓︎

3.7.1 - 2026-04-02⚓︎

3.7.0 - 2026-04-02⚓︎

New features⚓︎

Bug fixes⚓︎

3.6.3 - 2026-03-11⚓︎

  • make sure map geojson view honour share_status
  • move all views permissions to decorators
  • escape strings coming from translators
  • sanitize vars in templates when source is untrusted
  • always redirect to user_dashboard after map delete
  • set CSRF_COOKIE_SECURE and SESSION_COOKIE_SECURE to True by default
  • use ipaddress to validate private IPs
  • proper way to call URLValidator
  • remove showcase map/view

Thanks Stefan Vink from Radically Open Security for finding those issues. Thanks NLnet for funding this security audit work.

3.6.2 - 2026-02-25⚓︎

New Contributors⚓︎

3.6.1 - 2026-02-02⚓︎

3.6.0 - 2026-01-28⚓︎

New features⚓︎

  • do not add features and filters in data browser DOM until user use them by @yohanboniface in #3165
  • add management command to search, delete, block and restore maps by @yohanboniface in #3156

Bug fixes⚓︎

Internal changes⚓︎

3.5.0 - 2025-12-22⚓︎

This release is mainly making uMap installable in YunoHost as an official app.

  • adaptations for YunoHost installation in #3122
  • add "how to" deploy with Dokku in documentation in #3115
  • improve deployment documentation by @davidbgk in #3125
  • do not fail when classified colors are named colors by @yohanboniface in #3124

3.4.2 - 2025-11-26⚓︎

  • fix search by lat/lng

3.4.1 - 2025-11-24⚓︎

This release contains a security patch and the upgrade is highly recommanded.

Other than that, it contains a bit of cleaning Leaflet dependency in uMap core (mainly removing usage of L.DomUtil). It also bumps social-auth, so Bitbucket backend is EOL. Plus:

If you override js.html template, make sure to remove umap.core.js import line.

3.4.0 - 2025-11-04⚓︎

This release is mainly about a refactor of fields and filters management. There is now an UI to create filters, and fields can be loosely typed. Also: - a bunch of CSS fix to make editing on small screens a bit better - an effort to make clearer when the map is in draft and/or anonymous mode

New features⚓︎

Bug fixes⚓︎

Internal changes⚓︎

New Contributors⚓︎

3.3.6 - 2025-09-07⚓︎

3.3.5 - 2025-09-05⚓︎

New Contributors⚓︎

3.3.4 - 2025-09-02⚓︎

3.3.3 - 2025-09-02⚓︎

3.3.2 - 2025-08-28⚓︎

3.3.1 - 2025-08-28⚓︎

3.3.0 - 2025-08-14⚓︎

Notable changes:

  • edit buttons have moved from left click to right click (contextmenu), this allows the left click to be unchanged in edit mode, and thus to be able to open a popup for example and check it without the need to switch to preview mode
  • OpenRouteService is now integrated into uMap, if you have an OPENROUTESERVICE_APIKEY setting, this will add some new features: draw along routes, compute isochrones and get elevation for lines
  • there is an experimental print feature, it may be sometimes a bit slow, it can sometimes miss some map elements or images, but hopefully this can be improved in upcoming steps

New features⚓︎

Bug fixes⚓︎

Internal Changes⚓︎

Thanks to OpenRouteService!

3.2.0 - 2025-07-10⚓︎

This release changes the way pictograms are managed. Instead of managing them through a Django models in the admin, there is now a setting to point to one or more local folders. It makes it easier to deal with a lot of pictograms, and also allows to expose more than one collection to users. See https://docs.umap-project.org/en/stable/config/icons/ for more information.

Note: the old way is still supported for now, but deprecated.

New features⚓︎

Bug fixes⚓︎

Internal Changes⚓︎

New Contributors⚓︎

3.1.2 - 2025-06-11⚓︎

3.1.1 - 2025-06-11⚓︎

  • revert social-auth-core and deprecate bitbucket login

3.1.0 - 2025-06-11⚓︎

This version main improvement is the introduction of map templates, which allow to start new maps with prefilled style and optionally data.

There is also a new importer for open data portals (for now only dealing with OpenDataSoft portals). And for the more adventurous, a new experimental line decoration feature.

New features⚓︎

Bug fixes⚓︎

Internal Changes⚓︎

Changed templates⚓︎

  • umap/dashboard_menu.html
  • umap/design_system.html
  • umap/js.html
  • umap/map_list.html
  • umap/map_table.html
  • umap/user_dashboard.html
  • umap/user_map_table.html
  • umap/user_templates.html

3.0.6 - 2025-05-14⚓︎

3.0.5 - 2025-04-25⚓︎

New Contributors⚓︎

3.0.4 - 2025-04-14⚓︎

3.0.3 - 2025-04-11⚓︎

3.0.2 - 2025-04-08⚓︎

3.0.1 - 2025-04-07⚓︎

3.0.0 - 2025-04-07⚓︎

This is the first release to officially support collaborative real-time map editing. It introduces ASGI deployment, to support websockets, and adds Redis in the stack. But it's still possible to continue deploying in WSGI for now, and Redis is only mandatory when using the real-time feature.

How to use the real-time editing feature in your instance: - you need to deploy with ASGI, see https://docs.umap-project.org/en/stable/deploy/asgi/ - you need to set REALTIME_ENABLED=True in your settings

Other notable changes: - a first version of a real undo/redo - map categories; those are defined through the UMAP_TAGS settings

Note: you may want to update your search index to include the category search, see https://docs.umap-project.org/en/stable/config/settings/#umap_search_configuration

Breaking change⚓︎

  • The Docker image will not serve assets and data files anymore, an Nginx container must be configured. See docker-compose.yml for an example.

New features⚓︎

Bug fixes⚓︎

Internal changes⚓︎

Accessibility⚓︎

Changed templates⚓︎

  • auth/user_detail.html
  • auth/user_stars.html
  • umap/content.html
  • umap/home.html
  • umap/map_fragment.html
  • umap/map_list.html
  • umap/search.html
  • umap/search_bar.html
  • umap/team_detail.html

2.9.3 - 2025-03-07⚓︎

  • be explicit in the message that logout is needed after adding a new oauth provider

2.9.2 - 2025-03-04⚓︎

2.9.1 - 2025-03-03⚓︎

2.9.0 - 2025-03-03⚓︎

This release is mainly about making the sync feature deployable and more stable (but still not yet activated by default).

New features⚓︎

Bug fixes⚓︎

Internal changes⚓︎

Accessibility⚓︎

New Contributors⚓︎

2.8.2 - 2024-12-26⚓︎

Bug fixes⚓︎

2.8.1 - 2024-12-24⚓︎

Bug fixes⚓︎

2.8.0 - 2024-12-18⚓︎

What's Changed⚓︎

This release is mainly about being able to deploy uMap on helm/k8s, with a S3-compatible storage. Doing so, we introduce two new map statuses:

  • "draft" (which is now the default, unless you change the UMAP_DEFAULT_SHARE_STATUS setting), which makes the maps private by default
  • "deleted", which make that now a delete will be a soft delete (and the command umap empty_trash could be run to do the real delete).

Also pursuing the code cleaning (more modules and splitting uMap core code from Leaflet rendering one).

Finally, this is now the javascript who create the datalayer uuid, and then push it to the back. This is for preparing for the synchronisation between clients.

Breaking change⚓︎

  • if you use X-Accel-Redirect with Nginx, you must make sure that the X-DataLayer-Version header is forwarded to the client. This is the line you usually need to add in your Nginx /internal/ config:
    add_header X-DataLayer-Version $upstream_http_x_datalayer_version;
    

See the documentation for more information.

New features⚓︎

Bug fixes⚓︎

Internal changes⚓︎

Changed templates⚓︎

  • umap/css.html:
    • added umap/css/bar.css
    • added umap/css/popup.css
  • umap/js.html:
    • added umap/css/bar.js
  • umap/templates/registration/login.html
  • umap/templates/umap/map_init.html
    • changed the way we instantiate Umap (instead of U.Map)
  • umap/templates/umap/user_dashboard.html
    • changed the way we instantiate Umap (instead of U.Map)

New Contributors⚓︎

2.7.1 - 2024-10-25⚓︎

Bug fixes⚓︎

2.7.0 - 2024-10-24⚓︎

New features⚓︎

Bug fixes⚓︎

Internal changes⚓︎

Changed templates⚓︎

  • umap/css.html:
  • removed umap/vendors/contextmenu/leaflet.contextmenu.min.css
  • added umap/css/contextmenu.css
  • umap/js.html:
  • removed umap/vendors/contextmenu/leaflet.contextmenu.min.js
  • umap/templates/umap/map_detail.html:
  • changed robot directive
  • umap/templates/umap/dashboard_menu.html
  • use of UMAP_ALLOW_EDIT_PROFILE

Thanks @Luen for their first contribution!

2.6.3 - 2024-09-11⚓︎

2.6.2 - 2024-09-10⚓︎

Bug fixes⚓︎

  • fix German translation breaking home page in /de/

2.6.1 - 2024-09-10⚓︎

Bug fixes⚓︎

  • fix teams.all() called by mistake on anonymous users

2.6.0 - 2024-09-10⚓︎

New features⚓︎

Bug fixes⚓︎

Internal changes⚓︎

Thanks to @fim100 and @Dimitar5555!

2.5.1 - 2024-07-12⚓︎

Bug fixes⚓︎

  • fix a bug where collectstatic was not replacing correctly dynamic imports

2.5.0 - 2024-07-12⚓︎

New features⚓︎

Bug fixes⚓︎

Internal changes⚓︎

2.4.2 - 2024-06-26⚓︎

New features⚓︎

  • handle multiple dataUrl parameters on map load by @davidbgk in #1943

Bug fixes⚓︎

  • fix ajax proxy broken when using overpass URL that includes spaces
  • Distinction between clearing data vs. layers by @davidbgk in #1938
  • better spacing for the alert box, when activated by @almet in #1935
  • rationalize z-indexes in CSS by @davidbgk in #1942
  • Multiple sync-related fixes by @almet in #1936

Internal changes⚓︎

2.4.1 - 2024-06-24⚓︎

2.4.0 - 2024-06-21⚓︎

New features⚓︎

Bug fixes⚓︎

Internal changes⚓︎

Documentation⚓︎

  • docs: aggregate articles in English and French by @davidbgk in #1838

2.3.1 - 2024-05-17⚓︎

Bug fixes⚓︎

Internal changes⚓︎

Documentation⚓︎

2.3.0 - 2024-05-09⚓︎

New features⚓︎

Bug fixes⚓︎

Internal changes⚓︎

2.2.2 - 2024-05-01⚓︎

Bug fixes⚓︎

2.2.1 - 2024-05-01⚓︎

Bug fixes⚓︎

2.2.0 - 2024-05-01⚓︎

New features and improvements⚓︎

Bug fixes⚓︎

Internal changes⚓︎

Full Changelog: https://github.com/umap-project/umap/compare/2.1.3...2.2.0

2.2.0b0 - 2024-04-24⚓︎

Bug fixes⚓︎

New features / UX improvements⚓︎

Internal changes⚓︎

2.1.3 - 2024-03-27⚓︎

2.1.2 - 2024-03-25⚓︎

  • fix datalayer data file removed on save by mistake (this happened after switching to UUID, when a datalayer had more than UMAP_KEEP_VERSIONS, due to a sorting issue on purge old files after save)

2.1.1 - 2024-03-25⚓︎

  • fix Path.replace called instead of str.replace

2.1.0 - 2024-03-25⚓︎

Bug fixes⚓︎

  • deal with i18n in oembed URLs #1688
  • set CORS-related header for oEmbed and map views #1689
  • only use location bias in search for close zoom #1690
  • catch click event on "See all" buttons #1705

Internal changes⚓︎

  • replace datalayer ids with uuids #1630
  • replace Last-Modified with custom headers #1666

2.0.4 - 2024-03-01⚓︎

  • fix zoom and fullscreen not shown by default

2.0.3 - 2024-03-01⚓︎

Bug fixes⚓︎

Internal changes⚓︎

Documentation⚓︎

2.0.2 - 2024-02-19⚓︎

  • fix: run collectstatic first in Docker entrypoint

2.0.1 - 2024-02-18⚓︎

  • Do not use the compress command anymore for the Docker image (#1620)

2.0.0 - 2024-02-16⚓︎

This release is inaugurating a new era in versioning uMap: in the future, we'll take care of better documenting breaking changes, so expect more major releases from now on. More details on how we version.

The main changes are:

  • on the front-end side, we now use native ESM modules, so this may break on old browsers (see our ESlint configuration)
  • on the back-end, we upgraded to Django 5.x, which drops support for Python 3.8 and Python 3.9.
  • the OpenStreetMap OAuth1 client is not supported anymore (now deprecated by OpenStreetMap.org)
  • license switched from WTFPL to AGPLv3: having an OSI valid licence was a request from our partners and sponsors (#1605)

More details below!

Breaking changes⚓︎

  • upgrade to Django 5.x drops support for Python < 3.10
  • django-compressor has been removed, so umap compress is not a valid command anymore (compress is now done in the collectstatic process itself) (#1544, #1539)
  • removed support for settings starting with LEAFLET_STORAGE_ (deprecated since 1.0.0)
  • removed support for deprecated OpenStreetMap OAuth1 backend in favour of OAuth2 (see below)
  • FROM_EMAIL setting is replaced by DEFAULT_FROM_EMAIL, which is Django standard

Migrate to OpenStreetMap OAuth2⚓︎

  • create a new app on OSM.org: https://www.openstreetmap.org/oauth2/applications/
  • add the key and secret in your settings (or as env vars):
    • SOCIAL_AUTH_OPENSTREETMAP_OAUTH2_KEY=xxxx
    • SOCIAL_AUTH_OPENSTREETMAP_OAUTH2_SECRET=xxxx
  • if you changed AUTHENTICATION_BACKENDS, you need to now use "social_core.backends.openstreetmap_oauth2.OpenStreetMapOAuth2"
  • run the migration command, that will migrate all accounts from OAuth1 to Oauth2: umap migrate

New features⚓︎

  • Ability to clone, delete and download all maps from user’s dashboard (#1430)
  • Add experimental "map preview" in /map/ endpoint (#1573)
  • Adapt features counter in the databrowser to the currently displayed features (#1572)
  • Create an oEmbed endpoint for maps /map/oembed/ (#1526)
  • introduce UMAP_HOME_FEED to control which maps are shown on the home page (#1531)
  • better algorithm (WCAG 21 based) to manage text and picto contrast (#1593)
  • show last used pictograms in a separate tab (#1595)

Bug fixes⚓︎

  • Use variable for color in browser if any (#1584)
  • Non loaded layers should still be visible in legend and data browser (#1581)
  • Do not try to reset tooltip of feature not on map (#1576)
  • Empty file input when closing the importer panel (#1535)
  • Honour datalayersControl=expanded in querystring (#1538)
  • Fix icons for mailto and tel (#1547)
  • Do not ask more classes than available values in choropleth mode (#1550)
  • Build browser once features are on the map, not before (#1551)
  • Replace list.delete call by the proper remove method
  • Prevent datalayer to resetting to an old version on save (#1558)
  • Messages coming from Django where never displayed in map view (#1588)
  • Browser inBbox setting was not persistent (#1586)
  • Popup was not opening on click on browser when inBbox was active (#1586)
  • reset table editor properties after creating a new one (#1610)
  • do not try to animate the panel (#1608)

Internal changes⚓︎

  • Move XHR management to a module and use fetch (#1555)
  • Use https://umap-project.org link in map footer (#1541)
  • Add support for JS modules (+module for URLs handling) (#1463)
  • Pin versions in pyproject.toml (#1514)
  • Set a umap-fragment web component for lists (#1516)
  • Load Leaflet as a module
  • Replaced L.U global by U
  • Use SVG for default icon (circle) (#1562)
  • Set preconnect link for tilelayer (#1552)

Documentation⚓︎

  • Define an explicit release strategy (#1567)

Changed templates⚓︎

  • added header.html to add extra code in <head>
  • added branding.html with site logo
  • registration/login.html, which is not loaded in ajax anymore (and include branding.html)
  • umap/content.html the JS call to load more have changed
  • umap/navigation.html: it now includes branding.html
  • umap/map_table.html: total revamp
  • umap/user_dashboard.html: improved table header (search + download all) + inline JS changed

1.13.2 - 2024-01-25⚓︎

Bug fixes⚓︎

  • prevent datalayer to resetting to an old version on save (#1558)
  • replace list.delete call by the proper remove method (#1559)

1.13.1 - 2024-01-08⚓︎

Bug fix⚓︎

1.13.0 - 2024-01-08⚓︎

New features⚓︎

Bug fixes⚓︎

Documentation⚓︎

  • docs: Update the links in the README, remove the badges by @almet in #1501

Internal Changes⚓︎

Updated templates⚓︎

  • umap/templates/auth/user_form.html
  • umap/templates/umap/content.html
  • umap/templates/umap/js.html
  • umap/templates/umap/map_list.html
  • umap/templates/umap/map_table.html
  • umap/templates/umap/user_dashboard.html

See the diff.

1.12.2 - 2023-12-29⚓︎

Bug fixes⚓︎

1.12.1 - 2023-12-23⚓︎

New features⚓︎

Bug fixes⚓︎

Internal changes⚓︎

  • build: Update makefile testjs to open the browser by @almet in #1472

1.12.0 - 2023-12-17⚓︎

New features⚓︎

Bug fixes⚓︎

Documentation⚓︎

Internal Changes⚓︎

1.11.1 - 2023-11-27⚓︎

1.11.0 - 2023-11-20⚓︎

1.10.1 - 2023-10-27⚓︎

1.9.3 - 2023-10-18⚓︎

1.9.2 - 2023-10-12⚓︎

1.9.1 - 2023-10-12⚓︎

1.9.0 - 2023-10-12⚓︎

1.8.2 - 2023-09-27⚓︎

1.8.1 - 2023-09-22⚓︎

1.8.0 - 2023-09-22⚓︎

1.7.3 - 2023-09-18⚓︎

1.7.2 - 2023-09-01⚓︎

  • Fix remote data not fetched on first save and add a button to manually fetch data by @yohanboniface in #1289
  • Remove custom message from onbeforeunload event by @yohanboniface in #1288
  • Edit header polish: move "My Dashboard" and "Help" to the right, display asterisk in dirty mode by @yohanboniface in #1287
  • Make sure we load all data before downloading it by @yohanboniface in #1295
  • Fix datalayers not sending "dataloaded" event when min/maxZoom is set and map is loaded outside those values by @yohanboniface in #1296
  • Add back min-width for img in popup-large by @yohanboniface in #1297
  • Avoid using a tuple as a content type when guessed by @davidbgk in #1291
  • Put focus on name when opening feature edit panel by @yohanboniface in #1293
  • Better distinguish panel behaviour in portrait vs landscape modes by @yohanboniface in #1292

1.7.1 - 2023-08-28⚓︎

  • quote URL in ajax proxy before passing it to Nginx

1.7.0 - 2023-08-28⚓︎

1.6.1 - 2023-08-25⚓︎

1.6.0 - 2023-08-22⚓︎

1.5.1 - 2023-08-15⚓︎

  • Fix layers being hidden at zoom
  • Fix bad status show in edit header on map creation (cf #1260)

1.5.0 - 2023-08-15⚓︎

1.4.4 - 2023-07-22⚓︎

  • fix tooltip anchor unstable (cf #1224)
  • add a timeout in ajax proxy default view (cf #1222)
  • allow non ascii chars in variables (cf #1221)
  • add missing DB migration for label changes

1.4.3 - 2023-07-20⚓︎

  • fix issue introduced in 1.4.2 where trying to read a non existent gzip

1.4.2 - 2023-07-19⚓︎

  • fix If-Unmodified management for map prior to 1.3.0 (cf #1216)
  • allow arobases in variables (cf #1217)

1.4.1 - 2023-07-17⚓︎

  • fix tooltip position, after Leaflet upgrade (cf #1207)
  • replace mousewheel event by wheel, to follow Leaflet change (cf #1211)
  • fallback user to dashboard after OAuth process (cf #1208)
  • add share status in user dashboard (cf #1209)

1.4.0 - 2023-07-15⚓︎

  • add basic version of a "My Dashboard" page (cf #1196)
  • better fit iframe in popups (cf #1203)
  • fix missing line edit icons (cf #1205)
  • bump Leaflet from 1.3.4 to 1.9.4 (cf #1201)
  • fix permissions panel empty at first save (cf #1200)
  • add overflow-x: hidden to popup (cf #1198)
  • add time in datalayer versions list (cf #1195)

1.3.7 - 2023-07-03⚓︎

  • changed datalayer and tilelayer icons (cf #1188)
  • fixed wrong language code passed to localeCompare (cf #1190)
  • fixed natural sort of feature not placing space before other chars (cf #1191)

1.3.6 - 2023-07-01⚓︎

  • set font-display: swap; for fonts definition
  • do not force scroll on popup content
  • document Shift-Click and add Ctrl-Shift-click to edit datalayer
  • advanced filter should not affect non browsable layers
  • expose 'locale' parameter in templates
  • pass options at datalayer creation when importing from umap file
  • allow to set the lang while generating an anonymous_edit_url
  • control links target
  • allow to use properties as color value
  • add "delete" link in data browser
  • more natural sort of features
  • be more strict when coordinates are set manually
  • allow to sort reverse
  • handle CORS errors with an explicit message
  • add basic doc about settings
  • add umap command in Docker PATH
  • add a setting for the number of maps per search
  • use SVG icons
  • display latest created maps on empty search

1.3.5 - 2023-06-17⚓︎

  • fix stars link in header

1.3.4 - 2023-06-17⚓︎

  • allow to control icon opacity (cf #236)
  • display the number of maps on search results page
  • allow to customize user display name and URL slug
  • fix geo: scheme in (description) links (cf #1140)
  • fix popup footer floating within the content (cf #1146)

1.3.3 - 2023-06-07⚓︎

  • add Dockerfile
  • fix content overflow on popups (cf #1128)
  • display uMap version in the credit box + link to changelog (cf #1129)

1.3.2 - 2023-06-04⚓︎

  • fix wrong message after creating a map while authenticated
  • display user name in the map edit toolbar when authenticated

1.3.1 - 2023-06-03⚓︎

  • fix table rendering (cf #1117)
  • fix some errors not caught in ajax proxy (cf #1118 #1119)
  • add simple form to send secret edit link by email in anonymous mode (cf #1102)

1.3.0 - 2023-05-31⚓︎

  • added a filter by category panel (cf #1041, thanks @k-3st3ban)
  • added a permanent credit (cf #1041, thanks @k-3st3ban)
  • allow to add an overlay tilelayer
  • replaced custom locate control with Leaflet.Locate (cf #1031, thanks @aleksejspopovs)
  • fixed bug where we could not edit permissions of a new saved map unless reloading the page
  • CSS: Fix cut of text in iframes of popup content (cf #971, thanks @tordans)
  • enhanced property fallback in string formatting (cf #862, thanks @mstock)
  • lines and polygons measure is now displayed while drawing (cf #1068, thanks @knowname)
  • refactored zoomTo while making easing transition non default (cf #679 #179)
  • fixed old _storage_options not being cleaned when saving map (cf #1076)
  • added star maps feature (cf #683)
  • added a banner + removed create buttons when in read only mode (cf #1095)
  • added DOMPurify to escape malicious input from user (cf #1094)
  • expose direct map URL in the export panel (cf #699)
  • added a very basic /stats/ JSON view (cf #1100)
  • added max width for the help box (on small screens, cf #887)
  • display the steps for inputs of type range (cf #877)
  • lazy load tile layers thumbnails (cf #1089)
  • allow geolocation from iframe embeds (cf #898)
  • remove the limit of visible maps in user’s view (cf #1025)
  • switch to Django full text search instead of home made (cf #519)

1.2.7⚓︎

  • redirect to user_maps at auth end when window.opener is unavailable (Twitter auth flow)

1.2.6⚓︎

  • marked User.id as protected, to fix Twitter auth

1.2.5⚓︎

  • Allow to create search index without changing unaccent mutability (cf #519)
  • switched from If-None-Match to If-Unmodified-Since for concurrency control
  • prevent caching datalayers geojson when in edit mode
  • refactored gzip management

1.2.4⚓︎

  • upgrade to Django 4.x, and upgrade of other deps
  • switched from custom DictField to proper JsonField

1.2.3⚓︎

  • improved panel layout and image sizing (by @Binnette, cf #824)
  • upgraded Django to 2.2.17 and Pillow 8.0.1 (which drops support for python 3.5)
  • experimental fallback handling in templating (cf #820)
  • fixed search URL, and allow to control it from settings (cf #842)
  • fixed map frozen when setting by hand invalid coordinates (cf #799)
  • fixed changing map ownership (cf #780)
  • do not change map zoom when locating user (cf #763)
  • update map extent on first save if it has not been changed yet (cf #841)

1.2.2⚓︎

  • fixed bug in popup inner HTML (cf #776)

1.2.1⚓︎

  • minimal RTL support (cf #752)
  • fix username URL regex to allow spaces (cf #774)

1.2.0⚓︎

  • added translations for ar, ast, et, he, id, is, no, pt-br, pt-pt, si-lk, sr, sv, th-th, tr
  • fixed username not updated when login with OAuth (by @Binnette, cf #754)
  • removed protocol from iframe URL (by @Binnette, cf #748)
  • fixed icon max-height (cf #143)
  • better image and iframe sizing in right panel (cf #184)
  • allow to use variables for tooltips (cf #737)
  • add a marker on user geolocation (cf #339)
  • change arrow direction when "more controls" is active (cf #485)
  • add an experimental feature permalink (cf #294)
  • fixed edge case where slideshow will run even when inactive
  • fixed bug when trying to add a property with a dot in the name (cf #426)

1.1.2⚓︎

  • fixed parsing of two iframes
  • updated i18n
  • upgraded Django to 2.2.1 and psycopg2 to 2.8.1

1.1.1⚓︎

  • downgraded psycopg2 to 2.7.7 (migrations where failing); should be fixed with Django 2.2.1
  • fixed annoying bug where "load more map" would fail
  • allow to filter by share status in admin page

1.1.0⚓︎

  • added Map.BLOCKED share status, to redact maps issuing legal complaints (only available through the admin)
  • replaced DictField by JSONField (umap migrate needed)
  • added search_fields and autocomplete_fields to MapAdmin
  • lowercase frameborder in iframe export
  • fixed bug in slideshow since renaming of Leaflet.Storage

1.0.0⚓︎

Upgrading to 1.0⚓︎

  • because of the merge of django-leaflet-storage inside umap, the migrations has been reset, so a bit of SQL needs to be ran by hand:
BEGIN;
DELETE FROM django_migrations WHERE app = 'leaflet_storage';
DELETE FROM django_migrations WHERE app = 'umap';
ALTER TABLE leaflet_storage_datalayer RENAME TO umap_datalayer;
ALTER TABLE leaflet_storage_datalayer_id_seq RENAME TO umap_datalayer_id_seq;
ALTER TABLE leaflet_storage_licence RENAME TO umap_licence;
ALTER TABLE leaflet_storage_licence_id_seq RENAME TO umap_licence_id_seq;
ALTER TABLE leaflet_storage_map RENAME TO umap_map;
ALTER TABLE leaflet_storage_map_editors RENAME TO umap_map_editors;
ALTER TABLE leaflet_storage_map_editors_id_seq RENAME TO umap_map_editors_id_seq;
ALTER TABLE leaflet_storage_map_id_seq RENAME TO umap_map_id_seq;
ALTER TABLE leaflet_storage_pictogram RENAME TO umap_pictogram;
ALTER TABLE leaflet_storage_pictogram_id_seq RENAME TO umap_pictogram_id_seq;
ALTER TABLE leaflet_storage_tilelayer RENAME TO umap_tilelayer;
ALTER TABLE leaflet_storage_tilelayer_id_seq RENAME TO umap_tilelayer_id_seq;
COMMIT;
  • Then fake initial migrations:

    umap migrate --fake-initial
    
  • If you have customized some templates, change any leaflet_storage/ path to umap/

  • If you have customized some static, change any storage/ path to umap/

  • Each LEAFLET_STORAGE_XXX setting should be renamed in UMAP_XXX (but we still support them for now)

  • If you still have a MIDDLEWARE_CLASSES setting, rename to MIDDLEWARE

  • uMap now loads the local configuration from /etc/umap/umap.conf if UMAP_SETTINGS is not set, so you may want to use that path and remove the env var setting

  • As usual, remember to update statics:

    umap collectstatic
    umap compress
    

1.0.0-rc.9⚓︎

  • increased maps displayed in user maps page (cf #651)
  • exposed original map url in full export (cf #659)

1.0.0-rc.8⚓︎

  • fixed non browsable missing in caption panel
  • fixed remote datalayers missing in browse data panel when displayed on load (cf #509)

1.0.0-rc.7⚓︎

  • fixed table popup template not displaying name anymore (cf #647)

1.0.0-rc.6⚓︎

  • fixed OSM properties not read anymore (cf #641)
  • fixed permissions panel not active at first map save

1.0.0-rc.5⚓︎

  • fixed user autocompletion in permissions panel (cf #635)
  • fixed ternary choice dealing with unknown values (cf #633)

1.0.0-rc.4⚓︎

  • fixed geodjango defaulting geojson parsing to SRID 3857 instead of 4326
  • fixed tooltip on hover (cf #631)

1.0.0-rc.3⚓︎

  • added a readonly mode (UMAP_READONLY=True), useful to disallow update while migrating from one server to an other, for example

1.0.0-rc.2⚓︎

  • allow to cache proxied remote data requests (#513 #510 #160)
  • fixed popup template parsing of url with url as query string (#607)
  • naive support for nested variables in templates (#600)
  • Removed Map.tilelayer foreignkey
  • split popupTemplate in popupShape and popupTemplate: popupShape is for choosing between proper popup and panel, while popupTemplate now will allow to choose between default "name + description" mode, or table, or geoRSS ones. Allows to add more of those in the future also.
  • fixed popup not opening on first zoom button click when marker is clustered (#611)

1.0.0-rc.1⚓︎

  • BREAKING: support of python 2 is removed per upgrading to Django 2.0
  • WARNING: merge Leaflet-Storage and django-leaflet-storage inside umap to ease maintenance and contribution; See Upgrading to 1.0
  • permissions management forms are now built in JS directly
  • upgrade all dependencies
  • added a language switcher in the home page footer
  • added UMAP_CUSTOM_TEMPLATES and UMAP_CUSTOM_STATICS settings to make customization easier
  • added empty umap/theme.css to ease customization
  • add download link in the map and datalayers edit panel
  • fixed some touch related CSS issues
  • removed support for old URL (changed in version 0.3.0)
  • added languages: hr (Croatian), pl (Polish), hu (Hungarian), sl (Slovenian), el (Greek), gl (Galician)
  • JS locales are now bundled, no need to generate them while installing
  • local settings are now loaded from /etc/umap/umap.conf if available
  • fixed an issue where it was not possible to change the tilelayer if the tilelayer control was not added to the map (#587)
  • showLabel is now a ternary value (instead of having this plus labelHover) (#553)
  • fixed resetting a select to undefined for inheritable fields (#551)
  • fixed labelKey not being saved (#595)
  • filtering in data browser now is also reflected in the displayed features (#550)
  • fixed ClusterMarker text color on Chrome (#547)
  • allow to clone also markers
  • only list https ready tilelayers when page is in https (#567)
  • allow to use an unicode character as Marker symbol (#527)
  • add {rank} as dynamic feature property (to be used in popup or icon symbol)
  • add an explicit button to attach a owner to an anonymous map (#568)
  • Add 'TablePanel' popup template (#481)

0.8.0⚓︎

  • allow colon in properties to be consumed in popupTemplate
  • added am_ET, pl and sk_SK locales
  • fixed default licence being created in every available languages
  • switch to pytest for unit tests
  • Django 1.10 compatibility
  • add DataLayer.rank
  • Expose DataLayer versions
  • python3 support
  • add nofollow meta when map is not public

0.7.5⚓︎

  • upgrade osmtogeojson to 2.1.0
  • localize and proxy dataUrl parameter

0.7.4⚓︎

  • fix anonymous not able to edit map anymore

0.7.3⚓︎

  • add tooltip when drawing
  • import multiple files at a time
  • added Chinese (Taiwan) locale
  • fixed right-click on path vertex not working properly when editing

0.7.1⚓︎

  • upgrade Leaflet.Editable to 0.2.0
  • fixed some bugs after Leaflet.Editable switch

0.7.0⚓︎

  • introduce panel popup mode
  • upgraded leaflet.loading to 0.1.10
  • make the cluster text color dynamic
  • fix missing icons for transform to polygon/polyline actions
  • add a slideshow mode
  • make possible to set cluster color by hand
  • make possible to manage showLabel from layer and map
  • basic kml/gpx download support
  • MultiLineString are merged at import
  • catch setMaxBounds errors (when using useless bounds)
  • first version of a table editor
  • it's now possible to cancel every mouse action of a polygon (useful when using them as background)
  • simple custom popup templates
  • more control over map data attribution (custom inputs added)
  • basic HTTP optimistic concurrency control
  • add "empty" button in limit bounds fieldset
  • make possible to decide which properties the data browser will filter on
  • add "datalayers" query string parameter to override shown datalayers on map load
  • add edit fieldset for changing marker latlng by hand
  • moved from Leaflet.Draw to Leaflet.Editable
  • added Vietnamese
  • by default, allow_edit is now false
  • added Chinese (Taiwan) locale

0.6.x⚓︎

  • add TMS option to custom tilelayer
  • allow to define default properties at map level
  • support iframe in text formatting
  • fix bug where polygon export were adding a point
  • make that only visible elements are downloaded
  • iframe export helper
  • add Leaflet.label (for marker only atm)
  • GeoRSS support
  • heatmap support, thanks to https://github.com/Leaflet/Leaflet.heat
  • added optional caption bar
  • added new "large" popup template
  • added a button to empty a layer without deleting it
  • added a button to clone a datalayer
  • added dataUrl and dataFormat on map creation page
  • basic support for GeometryCollection import
  • removed submodules and switched to grunt for assets management
  • upgrade to django 1.6
  • sesql replaced by django-pgindex
  • support for gzip for datalayer geojson
  • support for X-Sendfile/Accel-Redirect
  • more translations
  • fix anonymous map owner not able to delete their map
  • fix missing vendors assets
  • reset South migrations (some were bugged); to be back again with django 1.7
  • added russian locale
  • http optimistic concurrency control
  • longer anonymous cookie max_age (one month instead of session only)
  • add possibility to override default zoom with LEAFLET_ZOOM setting
  • fix bug where anonymous map wasn't editable by logged in users even if edit status was ANONYMOUS

0.5.x⚓︎

  • datalayers are now sent to backend as geojson
  • there is now a global "save" button, and also a "cancel changes"
  • added a contextmenu, thanks to https://github.com/aratcliffe/Leaflet.contextmenu
  • added a loader, thanks to https://github.com/ebrelsford/Leaflet.loading
  • import are processed client side, thanks to https://github.com/mapbox/csv2geojson and https://github.com/mapbox/togeojson
  • download is handled client side
  • option "outlink" as been added, to open external URL on polygon click
  • edit shortcuts has been added (Ctrl+E to toggle edit status, Ctrl+S to save, etc.)
  • links in popup now open in a now window
  • possibility to add custom icon symbols
  • new option to clusterize markers, thanks to https://github.com/Leaflet/Leaflet.markercluster
  • remote data option added to datalayer: this will fetch data from a given URL instead of from the local database
  • popup window can now display a table with all features properties
  • support of OSM XML format, thanks to https://github.com/tyrasd/osmtogeojson
  • added a measure control, thanks to https://github.com/makinacorpus/Leaflet.MeasureControl
  • added Transifex config
  • simple help boxes
  • it's now possible to set background layer with manual settings
  • add an edit button in the data browser (when in edit mode)
  • add icon URL formatting with feature properties
  • add "Transform to Polygon/Polyline" action
  • new link on contextmenu to open external routing service from clicked point
  • fix bug where features were duplicated when datalayer was deleted then reverted
  • add layer action to databrowser
  • add optional default CSS
  • allow to close panel by Ctrl+Enter when editing in textarea
  • add management for map max bounds
  • add Ctrl+Z for canceling changes
  • internal storage structure totally reviewed: datalayers are stored as geojson files, instead of being split in features stored in PostGIS
  • upload and download moved to client side (see Leaflet.Storage)
  • cloned map name is now prefixed by "Clone of "
  • added Transifex config
  • workaround for non asciiable map names
  • add a share_status field in Map model

0.4.x⚓︎

  • add a data browser
  • add a popup footer with navigation between features
  • some work on IE compat
  • new tilelayer visual switcher
  • Spanish translation, thanks to @ikks
  • renamed internally category in datalayer
  • add a rank column to tilelayer to control their order in the tilelayer edit box
  • fix description that was not exported in the GeoJSON export
  • return proper 403 if bad signature on anonymous_edit_url access
  • refactored tilelayer management
  • smarter encoding management at import
  • smarter errors management at import
  • handle other delimiters than just comma for CSV import
  • Spanish translation, thanks to @ikks
  • map clone possibility

0.3.x⚓︎

  • add a setting to display map caption on map load (cf #50)
  • add nl translation
  • update to Leaflet 0.6-dev and Leaflet.Draw 0.2
  • handle anonymous map creation
  • Fix color no more displayed in map info box (cf #70)
  • portuguese translation (thanks @FranciscoDS)
  • fix bug when the map title was too long (making the slug too long, and so over the database limit for this field)
  • add a setting to display map caption on map load (cf Leaflet.Storage#50)
  • update to django 1.5
  • first version of a CSV import
  • add a Textarea in import form
  • first version of data export (GeoJSON only for now)

0.2.0⚓︎

0.1.0⚓︎

  • first packaged version