This release is inauguring a new era in versionning 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, soumap compress
is not a valid command anymore (compress is now done in thecollectstatic
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 byDEFAULT_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 properremove
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 byU
- 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 includebranding.html
)umap/content.html
the JS call to load more have changedumap/navigation.html
: it now includesbranding.html
umap/map_table.html
: total revampumap/user_dashboard.html
: improved table header (search + download all) + inline JS changed