A short summary of changes: New features in GRASS 8.0

Release notes on GitHub:


Stable Release

Release Candidate 2 (RC2)

Release Candidate 1 (RC1)

Git Source Code

Overview of changes

After more than 3 year of development the first stable release GRASS GIS 8.0.0 is available. Efforts have concentrated on making the user experience even better, providing many new useful additional functionalities to modules and further improving the graphical user interface.

Breaking news: new graphical user interface with entirely rewritten startup sequence!

This re-establishes user experience compatibility with QGIS and other connected software packages.

The GRASS GIS 8.0.0 release provides more than 1,300 fixes and improvements with respect to the release 7.8.6.

With the introduction of the semantic label raster metadata class, the temporal database was modified to version 3. Hence, to be able to read and process GRASS 7.x space-time datasets, users will be prompted to run G80:t.upgrade. If users want to read newly created space-time datasets back in GRASS 7.x, they can run G78:t.downgrade.

Launching the software

The user experience of the graphical user interface has been completely rewritten: no more clumsy selection screens - just enter the menu system directly!

And on command line, GRASS GIS now starts versionless, i.e. as grass.

New modules

Major module changes

(see also below for closed bugs)

Minor module changes

(see also below for closed bugs)

GUI: Improvements in the Graphical User Interface

New first time user startup and dark theme support
  • NEW: entire rewrite of GRASS GIS startup
  • Add new splash screen as decided in #1716 by @veroandreo in (PR:1803)
  • Added global dataset to download location in startup by @baharmon in (PR:544)
  • wxGUI about: add link to github by @landam in (PR:131)
  • wxGUI history: Use .wxgui_history as history file for the gui (#962) by @susi in (PR:1917)
  • wxGUI/About: remove hardcoded white background for dark mode by @petrasovaa in (PR:1215)
  • wxGUI: add dark mode support for command output by @nilason in (PR:759)
  • wxGUI: add dark mode support for vector attribute data table by @nilason in (PR:793)
  • wxGUI: added install notranslation function by @marisn in (PR:156)
  • wxGUI: add env parameter in RunCommand by @petrasovaa in (PR:1113)
  • wxGUI: add missing giface, fixes error when emitting grassdbChanged signal by @petrasovaa in (PR:1139)
  • wxGUI: Add missing import from by @wenzeslaus in (PR:1358)
  • wxGUI: Add missing title params to frames by @wenzeslaus in (PR:1301)
  • wxGUI: Change default color for rendering vectors (gray->blue) [news] by @wenzeslaus in (PR:1166)
  • wxGUI: Add new icons to data catalog for actions avaliable in context menu by @lindakladivova in (PR:811)
  • wxGUI: Add new icons to datacatalog for actions avaliable in context menu (continue) by @lindakladivova in (PR:830)
  • wxGUI: Add new location action to database node in Data tab by @lindakladivova in (PR:790)
  • wxGUI: Add new mapset action to data catalog by @lindakladivova in (PR:731)
  • wxGUI: address flake8 undefined variable by @petrasovaa in (PR:1325)
  • wxGUI Add web service layer: Fix dialog layout by @tmszi in (PR:627)
  • wxGUI AddWSDialog: Fix render WMTS layer with OGC:CRS84 coor system by @tmszi in (PR:674)
  • wxGUI AddWSDialog: Fix setting output layer name, after selecting another layer by @tmszi in (PR:667)
  • wxGUI AddWSDialog RenderWMSMgr: Fix render WMS jpeg source format by @tmszi in (PR:640)
  • wxGUI: Allow delete on multiple mapsets in data catalog by @lindakladivova in (PR:795)
  • wxGUI: always switch when creating new location/mapset by @petrasovaa in (PR:1229)
  • wxGUI: An action should be required before modifying other mapsets by @lindakladivova in (PR:848)
  • wxGUI animation: allow to use saved region instead of comp region by @petrasovaa in (PR:656)
  • wxGUI/animation: fix 3D animation by @petrasovaa in (PR:1551)
  • wxGUI/animation: fix deprecation warnings by @petrasovaa in (PR:149)
  • wxGUI/animation: fix and htt… by @petrasovaa in (PR:116)
  • wxGUI/animation: fix 'RuntimeError: dictionary changed size during iteration' by @tmszi in (PR:908)
  • wxGUI/animation: fix validation of extension of exported file by @tmszi in (PR:907)
  • wxGUI/animation: fix wxPyDeprecationWarning by @tmszi in (PR:854)
  • wxGUI/animation: fix wxPyDeprecationWarning by @tmszi in (PR:910)
  • wxGUI/animation: show error and proceed with temporal database mismatch by @petrasovaa in (PR:950)
  • wxGUI: Ask user about shell only when present by @wenzeslaus in (PR:1219)
  • wxGUI: avoid flush clipboard if not opened by @nilason in (PR:819)
  • wxGUI: avoid printing annoying wx debug message on startup by @petrasovaa in (PR:157)
  • wxGUI/catalog: do not expand mapset after filtering if was filtered out by @petrasovaa in (PR:763)
  • wxGUI/catalog: refactor to use DataCatalog panel from by @petrasovaa in (PR:1030)
  • wxgui: catch also TypeError when importing ctypes, see #305 by @landam in (PR:324)
  • wxGUI: Changes in Layer Manager tabs order and labels by @lindakladivova in (PR:802)
  • wxGUI/colorrules: fix OnOK when preview is updated after window is de… by @petrasovaa in (PR:443)
  • wxGUI/composer: use integers instead of wx id to fix pickle error by @petrasovaa in (PR:641)
  • wxGUI/core: account for .post in wxPython 4.0.7.post2 by @wenzeslaus in (PR:246)
  • wxgui: Create grassdata automatically on the first GUI startup by @lindakladivova in (PR:705)
  • wxGUI: create parallel wx.frame for Single Window layout development by @lindakladivova in (PR:1604)
  • wxGUI: dark theme for Python shell and editor by @petrasovaa in (PR:1220)
  • wxGUI datacatalog: Adapt tooltip 'Add new grass database' button by @lindakladivova in (PR:936)
  • wxGUI datacatalog: add direct editing of mapset and location name by @lindakladivova in (PR:920)
  • wxGUI/datacatalog: add icon for adding grassdb by @petrasovaa in (PR:769)
  • wxGUI datacatalog: Add multiple GRASS databases by @lindakladivova in (PR:761)
  • wxGUI/datacatalog: avoid ValueError when map name corrupted with multiple @ chars by @petrasovaa in (PR:966)
  • wxGUI/datacatalog: change ReloadTreeItems to use node-specific reloads by @petrasovaa in (PR:847)
  • wxGUI/Data catalog: distinguish label and name of nodes by @lindakladivova in (PR:783)
  • wxGUI/datacatalog: do not use all available cores for loading by @petrasovaa in (PR:1422)
  • wxGUI/datacatalog: don't expand the location tree node if the transformation dialog is closed by @tmszi in (PR:823)
  • wxGUI/datacatalog: enable lazy loading of maps by @petrasovaa in (PR:1434)
  • wxGUI/datacatalog: fix #1184 by @petrasovaa in (PR:1230)
  • wxGUI/datacatalog: Fix bad flag in reprojection dialog by @nilason in (PR:806)
  • wxGUI/datacatalog: fix display 3D raster by @tmszi in (PR:889)
  • wxGUI/datacatalog: fix error handling and add busy cursor, refresh as loading dbs by @petrasovaa in (PR:957)
  • wxGUI/datacatalog: fix incorrect entry invalid (broken) regular expression by @tmszi in (PR:1267)
  • wxGUI/datacatalog: fix setting output vector/raster format by @tmszi in (PR:1596)
  • wxGUI/datacatalog: fix switching mapset between different dbs by @petrasovaa in (PR:931)
  • wxGUI/datacatalog: fix unresponsive gui if too many maps in current mapset watched with watchdog are changing at once by @petrasovaa in (PR:1556)
  • wxGUI/datacatalog: flatten mapset-layer hierarchy, add icons for types, highlight current by @petrasovaa in (PR:742)
  • wxGUI datacatalog: merge LocationMapTree and DataCatalogTree by @lindakladivova in (PR:755)
  • wxGUI/datacatalog: move or copy location/mapset isn't allowed, show warning message dialog by @tmszi in (PR:822)
  • wxGUI/datacatalog: multiple grass databases context menu shows Delete locations by @lindakladivova in (PR:914)
  • wxGUI datacatalog: process of creating a new database by @lindakladivova in (PR:937)
  • wxGUI/datacatalog: remove unnecessary check and warning for dragging mapsets/locations by @petrasovaa in (PR:1303)
  • wxGUI/datacatalog: show warning message dialog if drag map them to the target location node in the tree by @tmszi in (PR:810)
  • wxGUI/datacatalog: fix crashing due to accessing GUI from other thread by @petrasovaa in (PR:1027)
  • wxGUI/datacatalog: Add rename and delete of Location and Mapset in Datacatalog by @lindakladivova in (PR:771)
  • wxGUI/datacatalog: Allow delete on multiple locations in data catalog by @lindakladivova in (PR:875)
  • wxGUI/datacatalog: catalog: first load and display tree with locations for responsiveness, then load everything by @petrasovaa in (PR:1043)
  • Check for gislock and other issues when deleting/renaming/editing mapset and location in catalog by @lindakladivova in (PR:904)
  • wxGUI/dbmgr: fix calculate column values by @tmszi in (PR:1370)
  • wxGUI/dbmgr: fix clik on the 'Modify layer' button if vector map doesn't have any layers by @tmszi in (PR:1334)
  • wxGUI dbmgr: Fix dbmgr widgets layout on the wxMSW by @tmszi in (PR:637)
  • wxGUI/dbmgr: fix get statistics for character column type if it contains NULL value by @tmszi in (PR:1574)
  • wxGUI/dbmgr: fix hit 'Refresh' button if vector map doesn't have any layers by @tmszi in (PR:1371)
  • wxGUI/dbmgr: fix insert record for each category into table by @tmszi in (PR:1333)
  • wxGUI/dbmgr: Show proper error when table parsing failed by @wenzeslaus in (PR:1112)
  • wxGUI d.histogram: Set default font by @tmszi in (PR:695)
  • wxGUI: rename Modules tab to Tools tab, and Display tab to Layers tab (PR:1927)
  • wxGUI: displaying infobar focused on first-time user by @lindakladivova in (PR:1078)
  • wxGUI: displaying infobar focused on first-time user (part 2) by @lindakladivova in (PR:1183)
  • wxGUI d.mon: Fix launch light-weight wx monitor without toolbars and statusbar by @tmszi in (PR:678)
  • wxGUI/d.mon: fix rendered image size according actual map display size by @tmszi in (PR:1064)
  • wxGUI: Do not reload the tree after canceled Delete in data catalog by @lindakladivova in (PR:789)
  • wxGUI: drop show preferences dialog as modal by @nilason in (PR:1132)
  • wxGUI: Each layertree has its own display toolbar by @lindakladivova in (PR:1785)
  • wxGUI: easier switching between locations (GRASS GIS 8) by @lindakladivova in (PR:1598)
  • wxGUI: Enable all Flake8 warnings by @wenzeslaus in (PR:1535)
  • wxGUI: Enable import-related warnings by @wenzeslaus in (PR:1523)
  • wxGUI: Enable lambda, escape, except, l warnings by @wenzeslaus in (PR:1518)
  • wxGUI: Enable multiple hash warning by @wenzeslaus in (PR:1516)
  • wxGUI: Enable unused var warning by @wenzeslaus in (PR:1502)
  • wxGUI: Exit after fatal lock errors by @HuidaeCho in (PR:1428)
  • wxGUI: fix 3D view wxPyDeprecationWarning, from https://trac.osgeo.or… by @petrasovaa in (PR:81)
  • wxGUI: fix another wx flag assertion error in DefaultFontDialog by @nilason in (PR:1545)
  • wxGUI: fix another wx flag assertion error in iclass by @petrasovaa in (PR:1471)
  • wxGUI: fix atexit error in debug mode by @nilason in (PR:772)
  • wxGUI: fix bad indentation by @nilason in (PR:784)
  • wxGUI: fix calling coordselect validator by @petrasovaa in (PR:1455)
  • wxGUI: fix closing map displays when used with workspaces, consolidat… by @petrasovaa in (PR:512)
  • wxGUI: fix cmd-c closing interactive colour table on mac by @nilason in (PR:1293)
  • wxGUI: fix deleting dict key while iterating overlays by @petrasovaa in (PR:1763)
  • wxGUI: fix deprecated wx.NewId by @petrasovaa in (PR:152)
  • wxGUI: fix d.histogram - save only after rendering done by @petrasovaa in (PR:235)
  • wxGUI: fix d.mon for py3 by @petrasovaa in (PR:122)
  • wxGUI: fix d.mon rendering #3896, caused by garbage collection of map… by @petrasovaa in (PR:174)
  • wxGUI: fix d.out.file command parsing with --overwrite by @petrasovaa in (PR:1284)
  • wxGUI: fix flake F401 (unused import) by @petrasovaa in (PR:1294)
  • wxGUI: fix for cases when validator is called automatically from wx.Dialog upon closing it with OK by @petrasovaa in (PR:1418)
  • wxGUI: fix GCP manager for py3 by @petrasovaa in (PR:245)
  • wxGUI: fix g.gui.vdigit on windows #530 by @petrasovaa in (PR:572)
  • wxGUI: fix importing data when new location was created by @petrasovaa in (PR:1416)
  • wxGUI: fix inconsistent layer sizes during rendering by @petrasovaa in (PR:552)
  • wxGUI: Fix key binding issues on mac by @nilason in (PR:818)
  • wxGUI: fix layout flag assert in wms dialog by @petrasovaa in (PR:1764)
  • wxGUI: Fix layout flags in vector field statistics dialog for wx 4.1.0 by @nilason in (PR:821)
  • wxGUI: fix layout flags needed for wxPython 4.1.0 by @petrasovaa in (PR:570)
  • wxGUI: fix menustrings generation and adjust flake8 by @petrasovaa in (PR:541)
  • wxGUI: fix parsing GDAL/OGR formats which contains a colon in a description by @landam in (PR:1226)
  • wxGUI: fix psmap from last change, remove redundant import by @petrasovaa in (PR:380)
  • wxGUI: fix query dialog #369 by @petrasovaa in (PR:390)
  • wxGUI: fix query dialog after recent changes by @petrasovaa in (PR:1266)
  • wxGUI: fix RunCommand to decode also empty string to return unicode by @petrasovaa in (PR:702)
  • wxGUI: fix settings when item added to settings but it doesn't exist yet locally by @petrasovaa in (PR:1811)
  • wxGUI: fix some flake8 issues by @petrasovaa in (PR:538)
  • wxGUI: fix wizard, by @petrasovaa in (PR:233)
  • wxGUI: fix WMS, includes changing widget because listtreectrl didn't … by @petrasovaa in (PR:242)
  • wxGUI: fix wx flag assertion error in SavedRegion Dialog (#1679) by @nilason in (PR:1680)
  • wxGUI: fix 'wxPyDeprecationWarning: Call to deprecated item. Use FindItem instead.' by @tmszi in (PR:1344)
  • wxGUI: fix wxPython 4.1.0 support for "About GRASS GIS" dialog by @nilason in (PR:901)
  • wxGUI: fix wxPython 4.1 support by @nilason in (PR:1161)
  • wxGUI/FlatNotebook: fix crash on mac and add support for dark mode using wxPython 4.1 by @nilason in (PR:856)
  • wxGUI/forms: Add giface to standalone forms and fix history in giface by @wenzeslaus in (PR:971)
  • wxGUI/forms: fix Python 3.8 integer warning by @petrasovaa in (PR:1302)
  • wxGUI/gcmd: fix read command stdout by @tmszi in (PR:1228)
  • wxGUI/gcp: adding the option to overwrite the result map by @tmszi in (PR:912)
  • wxGUI gcp: Allow choose map display web service layer as target map to display by @tmszi in (PR:654)
  • wxGUI/gcp: fix checking vector map existence in the group by @tmszi in (PR:680)
  • wxGUI/gcp: fix launch add vector map to group dialog by @tmszi in (PR:924)
  • wxGUI gcp: Fix show add vector map to group dialog by @tmszi in (PR:685)
  • wxGUI gcp GroupDialog: Fix StaticText widget existence check by @tmszi in (PR:647)
  • wxGUI/gcpmanager: g.gui.gcp: crash when closing; fix #430 by @petrasovaa in (PR:447)
  • wxGUI/g.extension: fix failure to uninstall addon by @nilason in (PR:1524)
  • wxGUI g.gui.animation: Fix wx.CheckBox widget deprecation warning by @tmszi in (PR:718)
  • wxGUI/g.gui.gcp: fix launch g.gui.gcp by @tmszi in (PR:824)
  • wxGUI/g.gui.iclass: fix copy vector features from vector map by @tmszi in (PR:1020)
  • wxGUI/g.gui.image2target: fix close window (dissociate the managed window from the AuiManager) by @tmszi in (PR:1038)
  • wxGUI/g.gui.image2target: fix show Settings dialog by @tmszi in (PR:1037)
  • wxGUI/g.gui.mapswipe: fix hit Apply button if first and second raster aren't chosen by @tmszi in (PR:1042)
  • wxGUI/g.gui.mapswipe: Fix wx.CheckListBox widget wxPyDeprecationWarning by @tmszi in (PR:773)
  • wxGUI/g.gui.psmap: add checking map frame exists if you add labels by @tmszi in (PR:1048)
  • wxGUI/g.gui.psmap: disable draw graphics tool on the preview page by @tmszi in (PR:1057)
  • wxGUI/g.gui.psmap: fix add legend error message by @tmszi in (PR:1041)
  • wxGUI/g.gui.psmap: fix double click on the map frame with vector map by @tmszi in (PR:1055)
  • wxGUI/g.gui.psmap: fix launch module dialog from the File menu by @tmszi in (PR:1058)
  • wxGUI/g.gui.psmap: fix move line object error message by @tmszi in (PR:1031)
  • wxGUI/g.gui.psmap: fix move point object error message by @tmszi in (PR:1033)
  • wxGUI/g.gui.psmap: fix preview orientation if page orientation is landscape by @tmszi in (PR:1056)
  • wxGUI/g.gui.psmap: fix resize line object by @tmszi in (PR:1032)
  • wxGUI/g.gui.rdigit: raster digitizer as standalone module by @tmszi in (PR:1051)
  • wxGUI g.gui.rlisetup: Fix get rectangle sample units size by @tmszi in (PR:633)
  • wxGUI/gmodeler: make python script in gmodeler using items instead of iteritems by @pesekon2 in (PR:340)
  • wxGUI/gselect: fix select widget for wxGUI 'd.vect' module by @tmszi in (PR:1195)
  • wxGUI/gui_core: enable/disable toolbar long help if toolbar exists by @tmszi in (PR:1922)
  • wxGUI/gui_core: fix preferences dialog rendered height on wxPython 4.1.1 by @tmszi in (PR:1825)
  • wxGUI/gui_core: fix 'Set image size' dialog rendered size on wxPython 4.1.1 by @tmszi in (PR:1890)
  • wxGUI/gui_core: fix trigger 'wx.EVT_CHOICE' event if you set widget selection programatically by @tmszi in (PR:1580)
  • wxGUI/import: check all layers by default by @petrasovaa in (PR:1018)
  • wxGUI ImportDialog: Improve output map name existence validation by @tmszi in (PR:675)
  • wxGUI/import_export: fix output map overwriting if global overwrite setting is allowed by @tmszi in (PR:1029)
  • wxGUI/import_export: fix validation input map name (overwrite flag) by @tmszi in (PR:1209)
  • wxGUI: IndexError after right click on 'GRASS Locations in...' in the Data tab by @lindakladivova in (PR:736)
  • wxGUI/infobar: attempt to fix #1213 by @petrasovaa in (PR:1214)
  • wxGUI/infobar: fix infobar creation with wxPython 4.1 by @petrasovaa in (PR:1202)
  • wxGUI/json: Using JSON for GUI settings by @petrasovaa in (PR:1015)
  • wxGUI/lmgr: add layer menu items for check/uncheck selected layers by @tmszi in (PR:1905)
  • wxGUI/lmgr: adjusts the position of the layer context option button (if opacity label is appended into layer name) by @tmszi in (PR:1458)
  • wxGUI/lmgr: fix add group layer during vector map editing by @tmszi in (PR:1109)
  • wxGUI lmgr: Fix cancel save workspace dialog by @tmszi in (PR:628)
  • wxGUI/lmgr: fix get layer name by @tmszi in (PR:1066)
  • wxGUI lmgr: Fix position of bitmap image button overlaid web service map layer name by @tmszi in (PR:669)
  • wxGUI/lmgr: fix Python Shell 'help()' function and intro text by @tmszi in (PR:1894)
  • wxGUI lmgr: Fix remove both selected parent/children group layer by @tmszi in (PR:642)
  • wxGUI/lmgr: fix return 'Layer' class str value if map layer name is None by @tmszi in (PR:820)
  • wxGUI/lmgr: prevent the scrollbar from scrolling up when a layer item is checked or unchecked (set focus on the layer item) by @tmszi in (PR:1896)
  • wxGUI location wizard: EPSG page by @lindakladivova in (PR:670)
  • wxGUI location wizard: First page by @lindakladivova in (PR:646)
  • wxGUI/location_wizard: fix column sorting of ListCtrl widget by @tmszi in (PR:1117)
  • Wx gui location wizard map picture removed by @lindakladivova in (PR:657)
  • wxGUI locdownload: Fix missing flush method by @tmszi in (PR:634)
  • wxGUI loc wizard: Correct errors according to flake 8 and add some description by @lindakladivova in (PR:728)
  • wxGUI/locwizard: fix flags for wxPython 4.1 by @petrasovaa in (PR:1330)
  • wxGUI/locwizard: fix more flags for wxPython 4.1 by @nilason in (PR:1343)
  • wxGUI loc wizard: fix title layout, bug introduced in changes for wx 4.1 by @petrasovaa in (PR:661)
  • wxGUI loc wizard: Improve new location's CRS method selection page by @lindakladivova in (PR:721)
  • wxGUI/locwizard: remove redundant message by @petrasovaa in (PR:1016)
  • wxGUI/LocWiz: remove unneeded +ellps proj4string tag by @nilason in (PR:1550)
  • wxGUI: Make Display related toolbars part of Display tab by @lindakladivova in (PR:1321)
  • wxGUI/mapdisp: Always respect user-set background color in Map Display by @wenzeslaus in (PR:1167)
  • wxGUI/mapdisp: fix double click on the overlays in the 3D view by @tmszi in (PR:872)
  • wxGUI/mapdisp: fix launch light-weight wx monitor without toolbars and statusbar by @tmszi in (PR:1903)
  • wxGUI/mapdisplay: register context menu items, addresses #1691 by @petrasovaa in (PR:1704)
  • wxGUI/mapdisp: Overlay properties in context menu by @wenzeslaus in (PR:1077)
  • wxGUI/mapswipe: call dialog Uninit only when dialog was actually created by @petrasovaa in (PR:836)
  • wxGUI/mapswipe: fix saving image to file by @petrasovaa in (PR:1725)
  • wxGUI/MapSwipe: Show comp. extent option in statusbar does not work #1714 by @lindakladivova in (PR:1717)
  • wxGUI/mapwin: add map overlays 'at' parameter arg validation by @tmszi in (PR:1069)
  • wxGUI/mapwin: check if 'BufferedMapWindow' instance exist before calling '_runUpdateMap()' method by @tmszi in (PR:1456)
  • wxGUI/mapwin: fix correct horizontal raster legend position after apply new legend setting by @tmszi in (PR:1080)
  • wxGUI mapwin: Fix Pointer tool double left click on a map canvas by @tmszi in (PR:529)
  • wxGUI/mapwin: fix saving the position of overlays after changing their position with the mouse pointer tool by @tmszi in (PR:817)
  • wxGUI mapwin: Fix show/hide vdigit toolbar by @tmszi in (PR:578)
  • wxGUI/mapwin: fix showing overlays module properties dialog from the map display context menu by @tmszi in (PR:1079)
  • wxGUI Module dialog: Fix enable scrolling for the Basic top module style (fix bug introduced in the issue #480) by @tmszi in (PR:503)
  • wxGUI: Field calculator wx.ListBox widget choices argument by @tmszi in (PR:460)
  • wxGUI: Fix copy-to-clipboard key binding for console (trac#3008) by @nilason in (PR:393)
  • wxGUI: g.gui.rlisetup config file open mode for write in text mode by @tmszi in (PR:410)
  • wxGUI: g.gui.vdigit update available vector maps after the frame is show by @tmszi in (PR:465)
  • wxGUI: Graphical Modeler About Dialog import by @tmszi in (PR:438)
  • wxGUI: Graphical Modeler decode string by @tmszi in (PR:441)
  • wxGUI: Graphical Modeler wx widget deprecation warning by @tmszi in (PR:442)
  • wxGUI: Histogramming Tool Plot xSpec, ySpec property value by @tmszi in (PR:422)
  • wxGUI: Histogramming Tool save text settings (font family/style/weight) into the file by @tmszi in (PR:421)
  • wxGUI: Import vector/raster dialog min width by @tmszi in (PR:492)
  • wxGUI: Layer Manager add layer into the empty layer group by @tmszi in (PR:413)
  • wxGUI: Layer Manager add vector map layer Set color table interactively menu item by @tmszi in (PR:472)
  • wxGUI: Layer Manager close the Layers NoteBook Display FlatNotebook page by @tmszi in (PR:411)
  • wxGUI: Manage color rules interactively (vector map) frame by @tmszi in (PR:429)
  • wxGUI: Manage color rules interactively (vector map) number of LoadTable method calls by @tmszi in (PR:444)
  • wxGUI: Manage color rules interactively (vector map) wx.CollapsiblePane widget layout by @tmszi in (PR:449)
  • wxGUI: Set vector output format load profile settings by @tmszi in (PR:451)
  • wxGUI: Set vector output format wx.Choice widget width by @tmszi in (PR:453)
  • wxGUI: Vector Network Analysis Tool close dialog by @tmszi in (PR:419)
  • wxGUI: Vector Network Analysis Tool ComboBox widget deprecation warning by @tmszi in (PR:418)
  • wxGUI: Vector Network Analysis Tool execute analysis by @tmszi in (PR:440)
  • wxGUI: Vector Network Analysis Tool FlatNotebook page small grey square artifact by @tmszi in (PR:425)
  • wxGUI: Vector Network Analysis Tool merge dicts by @tmszi in (PR:417)
  • wxGUI: module search GUI improved by @petrasovaa in (PR:1194)
  • wxGUI: more suitable color for infobar on Windows by @lindakladivova in (PR:1504)
  • wxGUI: new design for GNotebooks by @lindakladivova in (PR:1801)
  • wxGUI: NewDisplay button moved to LMToolsToolbar by @lindakladivova in (PR:1783)
  • wxGUI: NewIdRef was added only in wxPython 4.0.3. Fix import for <4.0.3 by @marisn in (PR:155)
  • wxGUI: New management icons for vector and raster data import by @lindakladivova in (PR:1204)
  • wxGUI: New, simplified, unified window titles by @wenzeslaus in (PR:1216)
  • wxGUI/nviz: fix failed map centring on mac with pre-wx4.1 by @nilason in (PR:895)
  • wxGUI/nviz: fix relative import from 'wxnviz' module by @tmszi in (PR:887)
  • wxGUI/nviz: fix reopening 3D by reloading layers by @petrasovaa in (PR:953)
  • wxGUI/nviz: fix update list of surface in vector page during delete constant surface by @tmszi in (PR:881)
  • wxGUI/nviz: SetMaskColour causes problems on macos with wx 4.1.0 by @petrasovaa in (PR:787)
  • wxGUI: one row for lmgr toolbar after adding 3D view tab by @lindakladivova in (PR:1485)
  • wxGUI preferences: Fix load epsg codes by @tmszi in (PR:545)
  • wxGUI/prompt: support dark themes by @petrasovaa in (PR:1217)
  • wxGUI/prompt: update autocomplete map list when there is a change in db by @petrasovaa in (PR:1573)
  • wxGUI/psmap: fix retrieval of projection information by @tmszi in (PR:1310)
  • wxGUI/psmap: properly isolate region setting from the rest of GUI by @petrasovaa in (PR:1127)
  • wxGUI/pyedit: add quit toolbar tool by @tmszi in (PR:1022)
  • wxGUI/pyedit: add recent files history menu by @tmszi in (PR:1021)
  • wxGUI/PyShell: check for wxPython version by @nilason in (PR:1160)
  • wxGUI/rdigit: fix for Python3 by @petrasovaa in (PR:254)
  • wxGUI rdigit: Fix show save dialog by @tmszi in (PR:594)
  • wxGUI rdigit: Update list of available raster map layers, when map layers tree changed by @tmszi in (PR:707)
  • wxGUI: refactor changing mapset through file menu and catalog with signals by @petrasovaa in (PR:919)
  • wxGUI: refactoring: build display status bar based on wx.StatusBar widget by @lindakladivova in (PR:1646)
  • wxGUI: refactoring: build GUI tools' status bars based on wx.StatusBar widget by @lindakladivova in (PR:1689)
  • wxGUI refactoring: New WorkspaceManager class by @lindakladivova in (PR:1437)
  • wxGUI: Remove calls of unicode function which don't work in Python 3 by @wenzeslaus in (PR:1111)
  • wxGUI: remove deprecated methods from MapDisplay by @petrasovaa in (PR:1729)
  • wxGUI: remove legacy initialization of image handlers by @petrasovaa in (PR:153)
  • wxGUI: Remove python2 specific sys.stderr encoding handling. Fixes #3921 by @marisn in (PR:167)
  • wxGUI: Remove user mapset from demolocation by @lindakladivova in (PR:1173)
  • wxGUI: remove Version and copyright from menu as redundant by @petrasovaa in (PR:1264)
  • wxGUI: replace deprecated wx.Yield by @petrasovaa in (PR:160)
  • wxGUI: Replace getchildren and getiterator from ElementTree by @wenzeslaus in (PR:1120)
  • wxGUI: replace obsolete wx.BitmapFromImage by @petrasovaa in (PR:230)
  • wxGUI/rlisetup: dissociate the managed window from the manager ('wx.aui.AuiManager' instance) before destroy wizard window by @tmszi in (PR:1196)
  • wxGUI Show message dialog if removed config file isn't selected from the list by @tmszi in (PR:631)
  • wxGUI/Save display to file dialog: add wxPython 4.1 support by @nilason in (PR:1175)
  • wxGUI: SaveToFile() missing 1 required positional argument by @lindakladivova in (PR:1637)
  • wxGUI/settings: fix updating nested dict when reading settings file by @petrasovaa in (PR:1823)
  • wxGUI: Show line numbers in the Python editor (pyedit and gmodeler) by @wenzeslaus in (PR:284)
  • wxGUI: Show the world map in Demolocation immediately after startup by @lindakladivova in (PR:1070)
  • wxGUI/Single-Window: arrange a startup GUI by @lindakladivova in (PR:1775)
  • wxGUI/Single-Window: Ensure display tab to be visible when added by @lindakladivova in (PR:1830)
  • wxGUI: Single-Window GUI: arrangement of basic widgets by @lindakladivova in (PR:1621)
  • wxGUI: Single-Window GUI: Integrate new map display wx.Panels into a AuiNotebook center pane #1735 by @lindakladivova in (PR:1732)
  • wxGUI/Single-Window: New change page event for AuiNotebook by @lindakladivova in (PR:1780)
  • wxGUI: small refactoring of mapframe by @petrasovaa in (PR:1669)
  • wxGUI/splashscreen: use standard one, try to show it before main app, increase timeout by @petrasovaa in (PR:1718)
  • wxGUI: Split widget initialization from notebook logic by @lindakladivova in (PR:1591)
  • wxGUI/startup: fix terminate location download dialog download thread by @tmszi in (PR:832)
  • wxgui: startup GUI automatic detection of grassdata: make case independent #644 by @lindakladivova in (PR:664)
  • wxGUI: startup screen removed by @lindakladivova in (PR:1400)
  • wxGUI/tplot: add option to show simple regression model line by @tmszi in (PR:1207)
  • wxGUI/tplot: fix export csv file by @tmszi in (PR:1206)
  • wxGUI/tplot: fix x, y coordinates validation by @tmszi in (PR:1199)
  • wxGUI/tplot: fixes for Matplotlib 3.3+ by @neteler in (PR:1191)
  • wxGUI: Fix an error when exporting csv file from g.gui.tplot by @lbartoletti in (PR:690)
  • wxGUI/treemodel: fix removing children of root by @petrasovaa in (PR:775)
  • wxGUI/treemodel: refactor TreeModel to allow more flexible Node classes. by @petrasovaa in (PR:797)
  • wxGUI/treemodel: revert weakref as it doesn't work with deepcopy by @petrasovaa in (PR:782)
  • wxGUI/treemodel: used weakref to fix deleting of nodes by @petrasovaa in (PR:778)
  • wxGUI: update Slovakia 3D precipitation voxel sample dataset URL by @nilason in (PR:1292)
  • wxGUI: Use correct (widget) with for word wrapping of warnings and errors by @marisn in (PR:490)
  • wxGUI: use default output font dialog for macOS and wxPython >=4.0.6 by @nilason in (PR:760)
  • wxGUI: Use system colours to enable dark mode support by @nilason in (PR:751)
  • wxGUI/vdigit: fix close settings dialog (if no vector map has been selected) by @tmszi in (PR:1394)
  • wxGUI/vdigit: fix 'Copy categories/features' editing tool if you select only one feature by @tmszi in (PR:1816)
  • wxGUI/vdigit: fix double click on the line/boundary after activate 'Edit selected line/boundary' editing tool by @tmszi in (PR:1814)
  • wxGUI/vdigit: fix double click on the line/boundary after activate 'Move selected vertex' editing tool and then switch to 'Edit selected line/boundary' editing tool by @tmszi in (PR:1815)
  • wxGUI vdigit: Fix Undo/Redo tool event by @tmszi in (PR:586)
  • wxGUI vdigit: Fix wx.CheckBox widget deprecation warning by @tmszi in (PR:700)
  • wxGUI/vdigit: show error message dialog if no vector map is open for editing, after activate 'Z bulk-labeling of 3D lines' tool by @tmszi in (PR:1877)
  • wxGUI vdigit: Update list of available vector map layers, when map layers tree changed by @tmszi in (PR:708)
  • wxGUI/vdigit: use 'FloatSpin' widget, which allows you to set the decimal snapping threshold value by @tmszi in (PR:1882)
  • wxGUI vnet: Fix ctypes c_char_p arg type (bytes object) by @tmszi in (PR:687)
  • wxGUI/vnet: fix removing page, wx layout assert error, missing giface by @petrasovaa in (PR:1822)
  • wxGUI/vselect: fix delete row from selected features list by @tmszi in (PR:1231)
  • wxGUI/vselect: fix show error message if selected map layer type is raster by @tmszi in (PR:1059)
  • wxGUI: Workspace save fails with SbManager has no IsShown by @lindakladivova in (PR:1665)
  • wxGUI WSPropertiesDialog: Fix close dialog by @tmszi in (PR:684)
  • wxGUI WSPropertiesDialog: Fix render new selected web service map layer in the map canvas by @tmszi in (PR:668)
  • wxGUI WSPropertiesDialog: Fix select layer if the web service map layer properties dialog is open by @tmszi in (PR:666)
  • wxGUI WSPropertiesDialog: Fix show web service map layer properties dialog by @tmszi in (PR:665)
  • wxGUI/wxpyimgview: Fix launch wxpyimgview by @tmszi in (PR:735)
  • wxGUI/xml: update GUI tools toolbox items by @tmszi in (PR:1050)
  • wxGUI/wx.Menu.Append: remove text argument by @landam in (PR:335)
  • wxGUI: multiple Python 3.10 fixes (PR:2050)
  • wxGUI: use basic top module notebook style on all platforms as default by @petrasovaa (PR:2063)
  • wxnviz: fix for HiDPI monitors with scaling set, fix decoding by @petrasovaa in (PR:307)
  • wxplot: add giface to write log correctly by @petrasovaa in (PR:428)
  • wxplot: use wxpython plotting instead of our old copy, adjust to use … by @petrasovaa in (PR:229)
  • wxGUI: address digitizer background map issue (PR:467) by @petrasovaa in (PR:494)
  • wxGUI: error message has appeared in the console tab/cmd after close any module dialog by @tmszi in (PR:249)
  • Update Location Wizard: First page by @lindakladivova in (PR:493)
  • Reflect grassdb changes in catalog by @petrasovaa in (PR:994)
  • Make Data tab the default in GUI by @lindakladivova in (PR:756)
  • MapSwipe window has wrong title by @lindakladivova in (PR:1692)
  • Start in a demo/startup location by @lindakladivova in (PR:868)
  • Store list of databases in settings by @lindakladivova in (PR:858)
  • Switch to another mapset when in use (aka force remove lock) by @lindakladivova in (PR:906)
  • Remove colouring of standard buttons by @nilason in (PR:744)
  • Misleading lock symbol icon in the in the Data tab toolbar by @lindakladivova in (PR:870)
  • Fix use wxGUI Raster Digitizer input raster map layer temporary region by @tmszi in (PR:470)
  • wxGUI: do not fail on invalid RC file (empty) by @landam in (PR:185)
  • wxGUI: use %d instead of %s for integers by @HuidaeCho in (PR:554)
  • wxGUI iclass + iscatt: fixes for Python3 by @petrasovaa in (PR:316)
  • Fix set up sampling and analysis framework wizard relative import by @tmszi in (PR:409)
  • Fix show layer inside the layer subgroup by @tmszi in (PR:400)
  • fix 3D rendering in animation tool by @petrasovaa in (PR:293)
  • fix #411: closing Map Display and layer tree from different places by @petrasovaa in (PR:427)
  • fix the renaming of wx.Event variables by @pesekon2 in (PR:128)

Python scripting

  • New Python subpackage for working with locations and mapsets by @wenzeslaus in (PR:837)
  • pygrass: Add update parameters method to Module by @wenzeslaus in (PR:1712)
  • pygrass: call centroid function when buffering areas by @ninsbl in (PR:1655)
  • pygrass: remove failing test as not useful by @petrasovaa in (PR:1411)
  • pygrass: Remove usage of bare except by @wenzeslaus in (PR:1544)
  • fix Iterable import in pygrass/vector by @lrntct in (PR:734)
  • pythonlib: add env variables to all relevant functions in script lib by @petrasovaa in (PR:677)
  • pythonlib: allow wkt to be also string in create_location() by @petrasovaa in (PR:723)
  • pythonlib: Enable ambiguous variable name warning by @wenzeslaus in (PR:1538)
  • pythonlib: Enable bare except warning by @wenzeslaus in (PR:1549)
  • pythonlib: Enable escape sequence warning by @wenzeslaus in (PR:1529)
  • pythonlib: Enable unused var warning by @wenzeslaus in (PR:1509)
  • pythonlib: fix pygrass Module tests by making it picklable by @petrasovaa in (PR:1407)
  • pythonlib/grassdb: on Windows we can't simply get file owner by @petrasovaa in (PR:945)
  • pythonlib/grassdb: replace unix only function for file owner name by @petrasovaa in (PR:896)
  • pythonlib: Reduce usage of bare except in script by @wenzeslaus in (PR:1543)
  • pythonlib: Remove star imports by @wenzeslaus in (PR:1546)
  • pythonlib: return None from run_command() by @wenzeslaus in (PR:165)
  • pythonlib: safer mechanism for switching dbs in create_location by @petrasovaa in (PR:804)
  • pythonlib: Use more specific language in CalledModuleError by @wenzeslaus in (PR:1525)
  • python scripting lib: fix run_command(error='status') not returning 0 by @petrasovaa in (PR:1839)
  • python/script/ Fix encode string by @tmszi in (PR:738)


  • Binder button by @chaedri in (PR:1628)
  • Added additional GRASS info to example_notebook by @chaedri in (PR:1686)
  • Added Binder setup files by @chaedri in (PR:1603)

Jupyter Notebooks

  • Raster Support for Interactive Jupyter maps with folium by @chaedri in (PR:1769)
  • Interactive vector maps for Jupyter Notebooks by @chaedri in (PR:1710)
  • grass.jupyter: add property filename to GrassRenderer by @petrasovaa in (PR:1846)
  • grass.jupyter: more flexible region handling for rendering by @petrasovaa in (PR:1871)
  • jupyter: Add virtual framebuffer X server dependency by @wenzeslaus in (PR:1827)
  • jupyter: Fix main notebook URL, note grass.jupyter is a preview by @wenzeslaus in (PR:1828)
  • jupyter: Non-interactive display by @chaedri in (PR:1668)
  • jupyter: Render 3D images with m.nviz.image by @wenzeslaus in (PR:1831)
  • jupyter: Add temporary files for Non-Interactive Display by @chaedri in (PR:1727)
  • Session initiations functions for Jupyter Notebooks by @chaedri in (PR:1629)

User Manuals - Documentation

Projection support

  • PROJ6+ + WKT2 support by @metzm in (PR:118), (PR:183), (PR:1240)
  • CRS management by @metzm in (PR:976)
  • datum: add support for D_Rauenberg_1983 by @neteler in (PR:1331)
  • datum.table: added SIRGAS 1995 by @neteler in (PR:464)
  • datum.table: add RGFG95 by @neteler in (PR:813)
  • Update reference from proj.4 or proj4 to proj (g.version) by @kikislater in (PR:54)

GDAL support

  • GDAL/OGR import: check projection of input data by @metzm in (PR:317)
  • GDAL/OGR import: report XY location when comparing projections by @metzm in (PR:368)

Database support

Library changes

  • configure: upgrade to autoconf 2.69 by @nilason in (PR:1845)
  • configure: use pkg-config for FreeType 2 by @infrastation in (PR:1719)
  • ctypes: fix Callable for Python 3.10 by @neteler in (PR:1672)
  • ctypes: Fix ctypesgencore for Python 3 by @wenzeslaus in (PR:379)
  • ctypes: move directory out of python/grass by @nilason in (PR:1898)
  • ctypesgen: Update to upstream ctypesgen version by @nilason in (PR:1651)
  • Define MIN() and MAX() correctly and exactly once by @infrastation in (PR:1795)
  • libgis: Allow parsing long GISDBASE paths by @attilaolah in (PR:1376)
  • libgis: allow to overwrite command history by @ninsbl in (PR:272)
  • libgis: Allow to use a fixed random seed via SOURCE_DATE_EPOCH by @bmwiedemann in (PR:251)
  • libgis parser: Add angle brackets to a single option/flag rule by @HuidaeCho in (PR:1399)
  • libgis parser: Show error for option file by @wenzeslaus in (PR:1433)
  • libgis parser: Use #-space-% to allow writing PEP8-compliant Python code by @wenzeslaus in (PR:1287)
  • libgis parser: Add a standard option for nprocs= (G_OPT_M_NPROCS) by @HuidaeCho in (PR:1644)
  • libgis: add missing return keyword to Gmake_mapset_element_misc() by @nilason in (PR:1751)
  • libgis: add test for invalid value to parser by @metzm in (PR:1459)
  • libgis: Advancing va_list manually after calling ovprintf() by @HuidaeCho in (PR:725)
  • libgis: Distinguish dirs and objects in dir creation by @wenzeslaus in (PR:1681)
  • libgis: More clear comments for aprintf by @HuidaeCho in (PR:726)
  • libgis parser: an empty string is not an answer by @metzm in (PR:958)
  • libgis: Use the full string length in strncmp() calls. by @infrastation in (PR:1060)
  • New color table: percentage of forest cover by @neteler in (PR:894)
  • lib/init: fix run py script with CRLF line terminators ('grass --exec') by @tmszi in (PR:860)
  • lib/init/ Updated bash history setting from 3000 to unlimite… by @cwhite911 in (PR:1026)
  • lib/init: set HISTSIZE to empty string for unlimited size by @nilason in (PR:1526)
  • libproj: added alias for ITRF92 by @neteler in (PR:1460)
  • libproj: change warning to debug message by @neteler in (PR:1337)
  • libproj: fix crs modification with PROJ6+ by @metzm in (PR:1007)
  • libproj: fix for PROJ6+ to get the ll equivalent of a CRS by @metzm in (PR:939)
  • libproj: fix lookup mechanism for datum grids with all versions of PROJ by @metzm in (PR:252)
  • libproj: fix results for ll equivalents by @metzm in (PR:1444)
  • libproj: fix test for PJ_TYPE_BOUND_CRS by @metzm in (PR:1013)
  • libproj: fix treatment of proj extension in wkt by @metzm in (PR:187)
  • libpython: Add helper library for benchmarking by @wenzeslaus in (PR:1670)
  • libpython: Add plot nprocs to benchmark CLI by @wenzeslaus in (PR:1761)
  • libpython: Avoid race condition when reading region in use_temp_region() by @wenzeslaus in (PR:638)
  • libpython: explain verbosity levels by @neteler in (PR:998)
  • libpython: relax requirements for band names by @metzm in (PR:1081)
  • libpython: Resolve path to mapset in setup.init by @wenzeslaus in (PR:1829)
  • libpython: Save and load benchmark results by @wenzeslaus in (PR:1711)
  • libpython/script: fix tests by @petrasovaa in (PR:1381)
  • libpython: Support non-parallel runs better by @wenzeslaus in (PR:1733)
  • libraster: add strerror(errno) to write failures by @metzm in (PR:1722)
  • libraster: Explain missing header file in get_cellhd by @wenzeslaus in (PR:933)
  • libraster: Band references implementation by @landam in (PR:63)
  • libraster: change Rast_legal_bandref() return value to bool by @nilason in (PR:1897)
  • libraster: fix Rast_legal_bandref() by @metzm in (PR:1796)
  • libraster: raster module memory: set new value globally by @neteler in (PR:922)
  • libraster / gdal.c: add recent GDAL dlls by @ninsbl in (PR:1874)
  • Rast_log_colors: Another attempt to address r.colors -g/-a (#1480) by @HuidaeCho in (PR:1937)
  • Lib: Speed up listing a lot of mapsets by 20% by @marisn in (PR:281)
  • libimagery: Integrate band references into portable signature files by @marisn in (PR:1501)
  • libimagery: Make band references optional to simplify generation of signatures by @marisn in (PR:1866)
  • libimagery: Simplify raster band reference management by @marisn in (PR:1272)
  • libimagery: Improve G_open|find _misc function documentation by @marisn in (PR:1760)
  • libimagery: move signatures to subdirs by @marisn in (PR:1850)
  • libsymbol: fix bad argument order by @nilason in (PR:1820)
  • allow registering from io objects by @ninsbl in (PR:1929)
  • Upgrade tgis db by @landam in (PR:306)
  • open_stds: check for unknown band references by @landam in (PR:1844)
  • Number of bands relevant only to strds by @landam in (PR:1447)
  • Move grass package content to directory named grass by @wenzeslaus in (PR:1356)
  • Move headers from include to include/grass by @wenzeslaus in (PR:1350)
  • utils/ fix get and set addon manual page source and history URL link (PR:1892)

Changes to software start

  • G80:grass: added support for google-chrome and chromium by @neteler in (PR:201)
  • G80:grass: Evaluate export lines only and expand variables in double/non-quoted values by @HuidaeCho in (PR:170)
  • G80:grass: fix typo in info_text, svn -> dev by @landam in (PR:78)
  • G80:grass: Match.getitem is new from version 3.6, we need to use g… by @petrasovaa in (PR:253)
  • G80:grass: used space as delimiter to get GRASS_VERSION_STRING by @ninsbl in (PR:405)
  • G80:grass: enforce Python 3 by @neteler in (PR:345)
  • init: Add --tmp-mapset option by @wenzeslaus in (PR:313)
  • init: Apply Black to the init script by @wenzeslaus in (PR:1359)
  • init: Change the history file according to the current mapset for Bash by @wenzeslaus in (PR:930)
  • init: Clean up Flake8 config by @wenzeslaus in (PR:1508)
  • init: Create demolocation in, not wxGUI by @wenzeslaus in (PR:1208)
  • init: Default to Bash, fallback to sh by @wenzeslaus in (PR:1836)
  • init: ensure zsh environment variable SAVEHIST is set by @nilason in (PR:805)
  • init: Solve most of Flake8 issues in by @wenzeslaus in (PR:1536)
  • init: Start in last used mapset with --gui like --text by @wenzeslaus in (PR:767)
  • init: Start shell only with TTY by @wenzeslaus in (PR:768)
  • init: Update doc for non-interactive jobs by @wenzeslaus in (PR:1753)
  • init: Update mapset and simplify shell prompts by @wenzeslaus in (PR:923)
  • init: Use argparse instead of custom parsing for CLI by @wenzeslaus in (PR:1239)
  • Add zsh history change by @nilason in (PR:975)
  • Add zsh terminal prompt support by @nilason in (PR:722)
  • tcsh prompt: fix update with change of mapset by @nilason in (PR:765)
  • Startup: Avoid a race condition by @HuidaeCho in (PR:548)

JSON / REST support

  • Fixed gis parser json implementation by @huhabla in (PR:99)
  • json parser: change + to @ for URLs by @neteler in (PR:175)
  • json parser: fix mapsets in tokenizing by @neteler in (PR:1252)

Code quality

  • Add list of commits for git blame to ignore by @wenzeslaus in (PR:1391)
  • Apply Black to all python scripts by @wenzeslaus in (PR:1347)
  • Apply Black to doc utils in man by @wenzeslaus in (PR:1366)
  • Apply Black to grass package, use Python 3 style everywhere by @wenzeslaus in (PR:1382)
  • Apply Black to helpers, examples, doc, and others by @wenzeslaus in (PR:1386)
  • Apply Black to locale by @wenzeslaus in (PR:1513)
  • Apply Black to Python utils by @wenzeslaus in (PR:1365)
  • Apply Black to temporal modules by @wenzeslaus in (PR:1388)
  • Apply Black to tests by @wenzeslaus in (PR:1387)
  • Apply Black to wxGUI by @wenzeslaus in (PR:1527)
  • Apply Mega-Linter fixes to GH workflow scripts by @wenzeslaus in (PR:1369)
  • Fix compiler warnings, part 1 by @nilason in (PR:1248)
  • Fix compiler warnings, part 2 by @nilason in (PR:1256)
  • Fix compiler warnings, part 3 by @nilason in (PR:1263)
  • Fix compiler warnings, part 4 by @nilason in (PR:1265)
  • Fix compiler warnings, part 5 by @nilason in (rst/interpfl lib & (PR:1271)
  • Fix compiler warnings, part 6 by @nilason in (PR:1274)
  • Fix compiler warnings, part 7 by @nilason in (PR:1275)
  • Fix compiler warnings, part 8 by @nilason in (PR:1276)
  • Fix compiler warnings, part 9 by @nilason in (PR:1316)
  • Fix compiler warnings, part 10 by @nilason in (PR:1395)
  • Fix compiler warnings, part 11 by @nilason in (PR:1405)
  • Fix compiler warnings, part 12 by @nilason in (PR:1406)
  • Fix spelling in comments esp. in GUI code by @wenzeslaus in (PR:1357)
  • Flake8 fixes for docs and others by @wenzeslaus in (PR:1511)
  • Flake8 fixes for utils and man by @wenzeslaus in (PR:1379)
  • Flake8: fix F401 (unused import) and F821 (undefined name) in scripts and lib by @petrasovaa in (PR:1314)
  • python PEP8 fixes by @neteler in (PR:1317)
  • pythonlib: Fix stylistic Flake8 warnings by @wenzeslaus in (PR:1486)
  • Remove pycache directories before release. by @sebastic in (PR:182)
  • Fix spelling errors. by @sebastic in (PR:1916), (PR:561), (PR:871), (PR:992)
  • Code quality fixes for grass package (lib/python) by @wenzeslaus in (PR:576)
  • Fix Flake8 errors in temporal modules by @wenzeslaus in (PR:573)
  • Fix flake8 pep8 errors by @neteler in (PR:986)
  • scripts: Enable ambiguous variable name warning by @wenzeslaus in (PR:1515)
  • scripts: Enable bare except warning by @wenzeslaus in (PR:1517)
  • scripts: Enable import not at top warning by @wenzeslaus in (PR:1510)
  • scripts: Fix stylistic Flake8 warnings by @wenzeslaus in (PR:1487)
  • scripts: Remove unused vars or ignore in Flake8 by @wenzeslaus in (PR:1498)

Unit tests / CI

  • Add C and C++ versions to CI by @wenzeslaus in (PR:596)
  • Add CentOS build check to CI by @wenzeslaus in (PR:604)
  • Add GitHub Action to build, run tests, and Python static code analysis by @wenzeslaus in (PR:525)
  • Add github workflow for docker build and push by @mmacata in (PR:1790)
  • Add label to new GitHub issue by @nilason in (PR:527)
  • CI: Add Flake8 check for by @wenzeslaus in (PR:1311)
  • CI: Add GH Super Linter for a subset of secondary files by @wenzeslaus in (PR:752)
  • CI: Add matplotlib to apt deps by @wenzeslaus in (PR:1703)
  • CI: add PDAL support by @neteler in (PR:1638)
  • CI: add proj-bin to have cs2cs for tests by @petrasovaa in (PR:1410)
  • CI: Do not run Docker job on forks by @wenzeslaus in (PR:1915)
  • CI: Enable Perl in Super-Linter by @wenzeslaus in (PR:1493)
  • CI: Fix ifs for jobs and rename master to main by @wenzeslaus in (PR:1813)
  • CI: Handpick C/C++ version combos for GCC tests by @wenzeslaus in (PR:1288)
  • CI: Make test report available as artifact by @wenzeslaus in (PR:1290)
  • CI: Make test report available even on failure by @wenzeslaus in (PR:1702)
  • CI: Print version info for Ubuntu and CentOS runs by @wenzeslaus in (PR:1832)
  • CI: Remove duplication in Ubuntu workflow by @wenzeslaus in (PR:1749)
  • CI: Remove notifications comming from Travis CI by @wenzeslaus in (PR:663)
  • CI: Run Docker for all release branches by @wenzeslaus in (PR:1975)
  • CI: Switch Travis to Ubuntu 20.04 (focal) by @wenzeslaus in (PR:1384)
  • CI: Update Flake8 by @wenzeslaus in (PR:1932)
  • CI: Update setting env vars, use 20.04, C gnu17 by @wenzeslaus in (PR:1092)
  • CI: Use a specific Flake8 version by @wenzeslaus in (PR:626)
  • CI: Use matrix and increase versions for Flake8 by @wenzeslaus in (PR:1309)
  • CI for MS Windows: Switch to OSGeo4W V2 by @ninsbl (PR:2074)
  • gunittest: CalledModuleError constructor accepts module, code, returncode, and errors by @HuidaeCho in (PR:1788)
  • gunittest: Deduplicate output decoding code by @wenzeslaus in (PR:1539)
  • gunittest docs: fix broken links by @neteler in (PR:934)
  • gunittest: Exclude broken tests by @wenzeslaus in (PR:1587)
  • gunittest: Fix stdout used instead of stderr by @wenzeslaus in (PR:1707)
  • gunittest: init super() to initialise 'errors' attribute by @nilason in (PR:1685)
  • gunittest: Non-zero return code on certian percetage of tests failing by @wenzeslaus in (PR:377)
  • gunittest: update module interface doctest by @nilason in (PR:1699)
  • gunittest: Add a new assertion for raster equivalence by @marisn in (PR:1148)
  • tests: Output more text and sort files by @wenzeslaus in (PR:1362)
  • testsuite example: info updated by @neteler in (PR:831)
  • testsuite: fix libgis/parser_json.c and r.fillnull by @neteler in (PR:1346)
  • testsuite: minor fixes by @neteler in (PR:855)
  • testsuite: r.blend quoting test by @neteler in (PR:347)




  • Mac: converted compile instructions from RTF to markdown by @neteler in (PR:636)
  • macOS/install: do not install system level docs by @nilason in (PR:1909)
  • macOS: modernize app bundle info by @nilason in (PR:941)
  • macOS: use @rpath as dynamic linker by @nilason in (PR:981)
  • Mac ReadMe: stylistic update by @nilason in (PR:639)
  • Mac: Update app icon for hi-res support by @nilason in (PR:829)
  • fix compilation on mac by @nilason in (PR:479)
  • init/pythonlib: unified use of addonbase for mac (PR:2004)


Docker support

New: Docker images are now built for the 8.0 branch.


  • Alpine dockerfile: removed PDAL by @neteler in (PR:455)
  • Alpine dockerfile: update python3 patch and add pdal package by @mmacata in (PR:378)
  • Alpine dockerfile: use proj 6.2.1 by @mmacata in (PR:255)
  • Alpine dockerfile: added subversion package for g.extension by @neteler in (PR:261)
  • Alpine dockerfile: Patch python instead of grass for alpine docker by @mmacata in (PR:304)
  • Alpine dockerfile: patch to work with py3.8 by @mmacata in (PR:278)
  • Alpine dockerfile: Alpine latest (stable) added by @neteler in (PR:275)
  • Alpine dockerfile: removed gisinit revision workaround by @neteler in (PR:280)
  • Alpine dockerfile: fix broken pip six installation by @neteler in (PR:1568), (PR:1581)
  • Dockerfile READMEs added by @neteler in (PR:147)
  • Dockerfiles: fix broken lib link by @neteler in (PR:1625)
  • Dockerfiles: fix broken grass-session tests by @neteler in (PR:1623)
  • Dockerfiles: install git before build by @mmacata in (PR:990)
  • Dockerfiles: moved into distro specific subdirs by @neteler in (PR:148)
  • Dockerfiles: remove workaround for grass-session by @neteler in (PR:1624)
  • Dockerfile Ubuntu/Debian: another link fix by @neteler in (PR:1626)
  • Dockerfile with Python 3, PDAL, grass-session, Ubuntu based by @neteler in (PR:134)
  • docker: fix GRASS lib path detection by @neteler in (PR:883)
  • docker: image with Ubuntu 19:10 by @neteler in (PR:260)
  • docker: update Ubuntu based images by @neteler in (PR:1180)
  • docker: version matrix added by @neteler in (PR:606)
  • introduce docker multistage build to alpine image by @mmacata in (PR:276)
  • Keep module_items.xml in docker alpine by @mmacata in (PR:330)
  • Read the ubuntu based Dockerfile by @hwbllmnn in (PR:143)
  • Switch to debian 10.1 as dockerfile base image (master) by @hwbllmnn in (PR:140)


  • added singularity file by @lucadelu in (PR:181)

Message Translations


  • Fedora SPEC file updated by @neteler in (PR:1969)

GitHub related

  • Issues are now on GitHub by @wenzeslaus in (PR:315)
  • Rename the master branch to main by @wenzeslaus in (PR:1806)
  • Rename tools directory to utils by @wenzeslaus in (PR:1348)
  • GitHub action CI: drop ubuntu-16.04 by @neteler in (PR:1254)
  • GitHub Action: Completion of security analysis with CodeQL by @mmacata in (PR:1300)
  • svn refs changed to git by @neteler in (PR:93)
  • GIS_H_VERSION: use git hash by @metzm in (PR:325)
  • add latest updates by @neteler in (PR:863)
  • change sponsor link to opencollective by @veroandreo in (PR:1865)
  • Reference file in README by @wenzeslaus in (PR:283)
  • Format YAML in GH workflows by @wenzeslaus in (PR:1367)
  • Fix osgeo4w workflow by @agiudiceandrea in (PR:1757)

Restructuring of the GRASS GIS Addons repository

New Addons since GRASS 7.8.6

New Contributors

(in alphabetical GitHub user name order)

Closed GitHub tickets since the last release

See GitHub.

For old trac tickets, see below.

Closed trac bugs since the last release

GRASS GIS fails to start without terminal
Use the system temporary directory for all GUI rendering files
add missing depencencies into winGRASS
Go back to using community version of ctypesgen
#3912 Error messsge link to gdalwarp fails
new feature band reference breaks space time vector datasets
Port to PDAL

Closed trac wishes since the last release

grass7 vector libraries modifications
Can the install process accept a DESTDIR additional variable?
i.segment: allow more than 2147483647 cells
Change the GRASS GIS start up to more beginner friendly
Associate database/location/mapset with workspace file
Add New Location action to the Datacatalog
Don't require -c for --tmp-location
allow limit viewshed computation by angle
Add option for vector types to v.rast.stats

Last modified 2 years ago Last modified on Mar 15, 2022, 2:26:12 AM
Note: See TracWiki for help on using the wiki.