= GRASS GIS 8.0.0 = [[TOC]] A short summary of changes: '''[wiki:Grass8/NewFeatures80 New features in GRASS 8.0]''' === Releases === ==== Stable Release ==== * ... ==== Release Candidate 2 (RC2) ==== * ... ==== Release Candidate 1 (RC1) ==== * Release date: ''DD MM 2021'' * Changelog: https://grass.osgeo.org/grass80/source/ChangeLog_8.0.0RC1.gz * Binaries: ​https://grass.osgeo.org/download/software/#g80x * Source code: * https://github.com/OSGeo/grass/releases/tag/8.0.0RC1 * https://grass.osgeo.org/grass80/source/grass-8.0.0RC1.tar.gz ([https://grass.osgeo.org/grass80/source/grass-8.0.0RC1.md5sum md5sum]) === Git Source Code === * Milestone: [https://github.com/OSGeo/grass/milestone/4?closed=1 "8.0.0"] * 8.0 release branch created on Nov 13, 2021 (https://github.com/OSGeo/grass/tree/releasebranch_8_0) * Git clone of latest 8.0 release branch (including yet unpublished bugfixes): {{{ git clone https://github.com/OSGeo/grass.git cd grass git checkout releasebranch_8_0 }}} === 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 [https://github.com/OSGeo/grass/compare/7.8.6...8.0.0 1,300 fixes and improvements] with respect to the release 7.8.6. Mention t.upgrade here? ==== New Contributors ==== (in alphabetical !GitHub user name order) * @aaronsms made their first contribution in (PR:1514) * @agiudiceandrea made their first contribution in (PR:1336) * @aroche made their first contribution in (PR:288) * @attilaolah made their first contribution in (PR:1376) * @baharmon made their first contribution in (PR:518) * @bmwiedemann made their first contribution in (PR:251) * @byronbest made their first contribution in (PR:113) * @CarlosGrohmann made their first contribution in (PR:1857) * @chaedri made their first contribution in (PR:1603) * @cwhite911 made their first contribution in (PR:1026) * @ecodiv made their first contribution in (PR:1246) * @ggardet made their first contribution in (PR:565) * @griembauer made their first contribution in (PR:983) * @infrastation made their first contribution in (PR:972) * @jentjr made their first contribution in (PR:650) * @jidanni made their first contribution in (PR:208) * @KolesovDmitry made their first contribution in (PR:361) * @lbartoletti made their first contribution in (PR:301) * @lrntct made their first contribution in (PR:734) * @Lucifergene made their first contribution in (PR:1812) * @mankoff made their first contribution in (PR:91) * @MikaelUrankar made their first contribution in (PR:1936) * @mmacata made their first contribution in (PR:151) * @mwort made their first contribution in (PR:85) * @nobeeakon made their first contribution in (PR:1089) * @ocsmit made their first contribution in (PR:1431) * @shubhamshah14102 made their first contribution in (PR:1951) * @ShubhamSwati made their first contribution in (PR:1608) * @SunveerSingh made their first contribution in (PR:1464) ==== UNSORTED FIXME ==== * wxGUI: Add rename and delete of Location and Mapset in Datacatalog by @lindakladivova in (PR:771) * wxGUI: address digitizer backround map issue (PR:467) by @petrasovaa in (PR:494) * wxGUI: Add temporary files for Non-Interactive Display by @chaedri in (PR:1727) * wxGUI: Change default color for rendering vectors (gray->blue) [news] by @wenzeslaus in (PR:1166) * wxGUI: Allow delete on multiple locations in data catalog by @lindakladivova in (PR:875) * wxGUI: catalog: first load and display tree with locations for responsiveness, then load everything by @petrasovaa in (PR:1043) * wxGUI: error message has appeared in the console tab/cmd after close any module dialog by @tmszi in (PR:249) * wxGUI: Fix an error when exporting csv file from g.gui.tplot by @lbartoletti in (PR:690) * change sponsor link to opencollective by @veroandreo in (PR:1865) * Add zsh history change by @nilason in (PR:975) * Add zsh terminal prompt support by @nilason in (PR:722) * allow larger maps in r.terraflow by @ninsbl in (PR:265) * Allow parsing long GISDBASE paths by @attilaolah in (PR:1376) * allow to overwrite command history by @ninsbl in (PR:272) * Allow to use a fixed random seed via SOURCE_DATE_EPOCH by @bmwiedemann in (PR:251) * Change is/is not to ==/!= for literal comparisons by @HuidaeCho in (PR:264) * Check for gislock and other issues when deleting/renaming/editing mapset and location in catalog by @lindakladivova in (PR:904) * Code quality fixes for grass package (lib/python) by @wenzeslaus in (PR:576) PROJ * 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) Portability: * env.bat.tmpl: Deal with blanks in OSGEO4W_ROOT by @jef-n in (PR:859) * 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 copy-to-clipboard key binding for console (trac#3008) by @nilason in (PR:393) * Fix dbmgr for Python3 by @petrasovaa in (PR:344) * Fix decoding stderr after render layer fail by @tmszi in (PR:407) code quality * Fix Flake8 errors in temporal modules by @wenzeslaus in (PR:573) * Fix flake8 pep8 errors by @neteler in (PR:986) * G80:g.extension -i (compile), -d (download) flag by @tmszi in (PR:496) * G80:g.extension -l ValueError by @landam in (PR:1849) * G80:g.extension test by @petrasovaa in (PR:1364) * fix init_dbif() returned values better interpretation by @pesekon2 in (PR:1008) * fix Iterable import in pygrass/vector by @lrntct in (PR:734) * Fix linker flags on FreeBSD. by @MikaelUrankar in (PR:1936) * Fix missing checkboxes in ListCtrl by @petrasovaa in (PR:204) * fix newid in psmap by @petrasovaa in (PR:154) * fix NULL values for very small areas address in v.rast.stats by @ninsbl in (PR:402) * Fix osgeo4w workflow by @agiudiceandrea in (PR:1757) * fix position of null cells by @ninsbl in (PR:389) * fix py3-numpy-dev package name by @neteler in (PR:112) * G80:r.fillnulls to run in python 3 by @mwort in (PR:85) * 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 source code URL when addon path starts with root path by @HuidaeCho in (PR:1645) * Fix spelling in comments esp. in GUI code by @wenzeslaus in (PR:1357) * Fix SyntaxError issues with Python 3. by @sebastic in (PR:549) * fix the renaming of wx.Event variables by @pesekon2 in (PR:128) * Fix unable to open file from python editor by @aroche in (PR:288) * fix usage of vector cats in constraint by @metzm in (PR:262) * Fix use wxGUI Raster Digitizer input raster map layer temporary region by @tmszi in (PR:470) * Fix valid location check, sync with other functions by @wenzeslaus in (PR:1777) * G80:v.in.pdal fix compilation on mac, #475 by @nilason in (PR:479) * Format YAML in GH workflows by @wenzeslaus in (PR:1367) * geos-config: Rename --libs to --clibs (configure uses --clibs) by @HuidaeCho in (PR:177) * get rid of wx.insertStringItem deprecation warnings by @pesekon2 in (PR:120) * gislib/dox: Refine the command line parsing doc. by @infrastation in (PR:1010) * GRASS GIS 8.0 changes by @neteler in (PR:1597) * 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) * libimagery: move signatures to subdirs by @marisn in (PR:1850) * images2gif: PILLOW_VERSION is obsolete by @petrasovaa in (PR:899) * libimagery: Improve G_open|find _misc function documentation by @marisn in (PR:1760) * 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 grass.py, not wxGUI gis_set.py 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 grass.py 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) * install: check lowercased prefix by @nilason in (PR:949) * 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) docker: * 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) * libsymbol: fix bad argument order by @nilason in (PR:1820) * Make Data tab the default in GUI by @lindakladivova in (PR:756) * make python script in gmodeler using items instead of iteritems by @pesekon2 in (PR:340) * MapSwipe window has wrong title by @lindakladivova in (PR:1692) * Misleading lock symbol icon in the in the Data tab toolbar by @lindakladivova in (PR:870) * more proofreading for r.geomorphon by @infrastation in (PR:991) * 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) * New color table: percentage of forest cover by @neteler in (PR:894) * Number of bands relevant only to strds by @landam in (PR:1447) * open_stds: check for unknown band references by @landam in (PR:1844) * os.newline should not be used when writing in text mode by @petrasovaa in (PR:387) * perlcritic: fix perlcritic errors by @ocsmit in (PR:1431) * PS Driver: Write data to a tempfile before closing by @HuidaeCho in (PR:1451) * rasterlib: Explain missing header file in get_cellhd by @wenzeslaus in (PR:933) * raster module memory: set new value globally by @neteler in (PR:922) * Rast_log_colors: Another attempt to address r.colors -g/-a (#1480) by @HuidaeCho in (PR:1937) * Reference CONTRIBUTING.md file in README by @wenzeslaus in (PR:283) * Reflect grassdb changes in catalog by @petrasovaa in (PR:994) * register.py: allow registering from io objects by @ninsbl in (PR:1929) * Remove colouring of standard buttons by @nilason in (PR:744) * remove deprecated py 'PIL' module 'fromstring', 'tostring' method call by @tmszi in (PR:1223) * Remove redundant encode string call in the error message string interpolation by @tmszi in (PR:308) * Removing map layer crashes wxGUI (trac.osgeo.org/grass/ticket/3607) by @petrasovaa in (PR:462) * render: Fix .legrow file existence check by @tmszi in (PR:691) * replace deprecated inspect function by @petrasovaa in (PR:334) * replace obsolete time.clock() in Python 3.3 by @petrasovaa in (PR:244) * simplify GRASS_EXECUTABLE handling in package.sh by @landam in (PR:445) * Start in a demo/startup location by @lindakladivova in (PR:868) * Startup: Avoid a race condition by @HuidaeCho in (PR:548) * Store list of databases in settings by @lindakladivova in (PR:858) * switch environment: also change mapset by @metzm in (PR:286) * Switch to another mapset when in use (aka force remove lock) by @lindakladivova in (PR:906) * Switch to debian 10.1 as dockerfile base image (master) by @hwbllmnn in (PR:140) * Sync Korean translations by @HuidaeCho in (PR:556) * tcsh prompt: fix update with change of mapset by @nilason in (PR:765) * Update Location Wizard: First page by @lindakladivova in (PR:493) * Update of travis configuration for Python 3 by @neteler in (PR:115) * Update reference from proj.4 or proj4 to proj (g.version) by @kikislater in (PR:54) * Upgrade tgis db by @landam in (PR:306) * Use .wxgui_history as history file for the gui (#962) by @susi in (PR:1917) ==== New modules ==== * G80:g.download.location: moved to core, create grass.utils lib by @wenzeslaus in (PR:1715) * G80:i.band.library - Prints available semantic label information used for multispectral data. * G80:r.in.pdal: a PDAL based replacement of r.in.lidar by @marisn in (PR:1200) * G80:r.semantic.label - Manages semantic label information assigned to a single raster map or to a list of raster maps. ==== Major module changes ==== (see also below for closed bugs) * G80:... ==== Minor module changes ==== (see also below for closed bugs) TODO: re-order this section (perhaps some entries need to go elsewhere: major or new modules) * G80:db.describe: Remove unused tdesc by @HuidaeCho in (PR:1426) * G80:db.in.ogr: Add gdal_config= and gdal_doo= by @HuidaeCho in (PR:1425) * G80:db.in.ogr: single quotes to double quotes by @HuidaeCho in (PR:1430) * G80:db.univar: Ignore rows with NULLs with -e by @wenzeslaus in (PR:1341) * G80:db.univar: numerical instability can lead to bug in calculations of stdev, etc by @mlennert in (PR:101) * G80:d.mon: fix get list of running monitors by @tmszi in (PR:1902) * G80:d.legend: Fix position of units and background by @wenzeslaus in (PR:1075) * G80:d.mon: Do not clear an existing output file on fatal error by @HuidaeCho in (PR:1452) * G80:d.polar: fix launch module (py3) and write output EPS file by @tmszi in (PR:1107) * G80:d.polar: test added by @neteler in (PR:1108) * G80:d.rast.arrow: Fix negative drainage directions by @HuidaeCho in (PR:777) * G80:d.rast.edit: fix launch wxGUI (py3/wxPy4) by @tmszi in (PR:1085) * G80:m.proj: replace checks in code by parser rules by @wenzeslaus in (PR:106) * G80:g.copy: Report failed copy using an error message by @wenzeslaus in (PR:1086) * G80:g.extension: #3902 multiple metadata entries by @anikaweinmann in (PR:138) * G80:g.extension: add branch option by @ninsbl in (PR:1130) * G80:g.extension: add '-j' flag which generates JSON file containing the download URLs of the official Addons by @tmszi in (PR:1009) * G80:g.extension: allow to install extensions from a fork of the official repo by @ninsbl in (PR:1177) * G80:g.extension: change to python3 by @anikaweinmann in (PR:83) * G80:g.extension: check if svn program is installed by @neteler in (PR:1145) * G80:g.extension: distinguish between extensions and modules by @metzm in (PR:582) * G80:g.extension: dont expand db modul class by @ninsbl in (PR:424) * G80:g.extension: Fix installation from gitlab repositories by @tmszi in (PR:683) * G80:g.extension: fix 'rate limit exceeded' http error during request json file (add-ons paths) from the official add-ons github server url by @tmszi in (PR:1106) * G80:g.extension: get branch from version by @ninsbl in (PR:1700) * G80:g.extension: improve way how to parse module name from makefile by @tmszi in (PR:1142) * G80:g.extension: match module files on Windows by @ninsbl in (PR:1565) * G80:g.extension: only warn when non-essential files are missing by @wenzeslaus in (PR:164) * G80:g.extension: remove branch from Windows-function by @ninsbl in (PR:1151) * G80:g.extension: workaround to use grass7 addon repo by @neteler in (PR:1612) * G80:g.filename: Create dir in mapset only when asked by @wenzeslaus in (PR:1687) * G80:g.gui.iclass: replace removed dist_point_to_segment() by @nilason in (PR:645) * G80:g.gui.image2target: Fix wxPython Phoenix support by @nilason in (PR:396) * G80:g.gui.psmap: fixes for Python3 by @petrasovaa in (PR:133) * G80:g.gui.vdigit Snap selected lines/boundaries tool: Fix checking SnapLine function return value by @tmszi in (PR:506) * G80:g.parser: Add G_OPT_M_NPROCS by @HuidaeCho in (PR:1652) * G80:g.proj: fix reading input WKT by @metzm in (PR:1582) * G80:g.proj: fix segfault when reading proj info from georef file by @petrasovaa in (PR:599) * G80:g.region: Add more detail into error messages by @wenzeslaus in (PR:1140) * G80:g.region: do not update WIND file when not needed by @petrasovaa in (PR:1627) * G80:g.rename: avoid buffer overflow by @metzm in (PR:1899) * G80:g.search.modules: without keywords, list all modules by @metzm in (PR:989) * G80:g.version: Fix February print by @HuidaeCho in (PR:366) * 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) * G80:i.group: fit long names to fancy file listing by @nilason in (PR:1818) * G80:i.ortho.photo: Add optional correction for panorama cameras by @metzm in (PR:401) * G80:i.pansharpen: Fix encode string by @tmszi in (PR:745) * G80:i.pansharpen: grass.decode stdout by @ninsbl in (PR:416) * G80:i.tasscap: support for Worldview-2 added by @neteler in (PR:186) * G80:i.vi: fix PVI formula (PR:1985) * G80:i.vi: fix check input 'red' param arg by @tmszi in (PR:1353) * G80:i.vi: fix the check for the existence of the 'redchan' variable by @tmszi in (PR:1378) * G80:i.vi: red band not required and GUI section modified by @YannChemin in (PR:179) * G80:i.vi: write out FCELL instead of DCELL by @neteler in (PR:236) * G80:i.zc by @metzm in (PR:142) * G80:r.blend: Quote map names in r.mapcalc expressions. by @marisn in (PR:277) * G80:r.colors: add offset and scale by @metzm in (PR:954) * G80:r.compress: Reversing logic to fix Failure Reporting by @Lucifergene in (PR:1812) * G80:r.contour: fix an error message text by @infrastation in (PR:1014) * G80:r.external: add flag to read min/max from metadata by @metzm in (PR:1856) * G80:r.external: read "nan" as nan by @metzm in (PR:338) * G80:r.external: transfer_colormap added by @landam in (PR:337) * G80:r.external: major speed-up by @metzm in (PR:1305) * G80:r.geomorphon: add two more comparison modes by @infrastation in (PR:1096) * G80:r.geomorphon: fix an out-of-bounds read w/multires by @infrastation in (PR:995) * G80:r.geomorphon: fix landform category names by @infrastation in (PR:1421) * G80:r.geomorphon: fix shape calculations by @infrastation in (PR:1040) * G80:r.geomorphon: implement a new "one-off" mode by @infrastation in (PR:1157) * G80:r.geomorphon: remove multires-specific code by @infrastation in (PR:1570) * G80:r.geomorphon: separate input from output by @infrastation in (PR:1052) * G80:r.grow: correctly handle shrinking of maps without NULL values by @marisn in (PR:343) * G80:r.grow.distance: add minimum and maximum distance options by @metzm in (PR:1453) * G80:r.grow.distance: update module description with value raster by @griembauer in (PR:983) * G80:r.import and v.import: Use PID and node for tmp location by @wenzeslaus in (PR:653) * G80:r.import: do not reproject when projection matches (bug #547) by @petrasovaa in (PR:659) * G80:r.import extent=region bug fix by @anikaweinmann in (PR:404) * G80:r.import: fix calling r.import when use_temp_region is used by @petrasovaa in (PR:676) * G80:r.import: pass extent to r.in.gdal by @mmacata in (PR:291) * G80:r.import: use temp region for resolution=value by @wenzeslaus in (PR:197) * G80:r.in.wms: replace broken URLs with alternative WMS by @neteler in (PR:1635) * G80:r.in.wms: restore NASA GIBS by @agiudiceandrea in (PR:1756) * G80:r.in.wms BaseCapabilitiesTree: Fix init ElementTree class by @tmszi in (PR:651) * G80:r.in.wms: enable CreateOptions for GDAL driver by @neteler in (PR:1558) * G80:r.in.wms: Fix Access window out of range in RasterIO() error (raster tile size) by @tmszi in (PR:693) * G80:r.in.wms: gdal user:password support by @anikaweinmann in (PR:196) * G80:r.in.wms: message update by @jidanni in (PR:613) * G80:r.in.wms: write string not bytes to capabilities file by @ninsbl in (PR:195) * G80:r.kappa: better user msg; fix var by @neteler in (PR:341) * G80:r.kappa: fix omission typo by @neteler in (PR:433) * G80:r.kappa: maps[0] is the reference and maps[1] is the classified map by @mlennert in (PR:290) * G80:r.mapcalc.simple: screenshot added by @neteler in (PR:188) * G80:r.neighbors: add option for exponential weighting by @ninsbl in (PR:597) * G80:r.neighbors: add testsuite by @ninsbl in (PR:729) * G80:r.object.geometry: move from addons by @petrasovaa in (PR:1918) * G80:r.out.gdal / v.out.ogr: fix xy export by @metzm in (PR:1564) * G80:r.pack/r.unpack: fix pack and unpack VRT raster map with tiled raster maps by @tmszi in (PR:1074) * G80:r.pack/r.unpack: fix packing/unpacking vrt map if some of tiled rasters doesn't have color table by @tmszi in (PR:1116) * G80:r.random: Add -s flag, remove -i flag, redo interface by @wenzeslaus in (PR:1054) * G80:r.region: Vect_get_map_box() requires level 2 by @HuidaeCho in (PR:1404) * G80:r.report: add default units, change to full unit names by @petrasovaa in (PR:1666) * G80:r.resamp*, v.surf.rst: more resampling keywords added by @neteler in (PR:141) * G80:r.sim: dynamic allocation of walkers by @petrasovaa in (PR:228) * G80:r.sim / simlib: use nstack only when walkers output needed by @petrasovaa in (PR:332) * G80:r.sim.sediment: fix segfault, memory freeing was in wrong place by @petrasovaa in (PR:1094) * G80:r.sim.water: NC SPM example and other modernizations by @wenzeslaus in (PR:171) * G80:r.slope.aspect: fix -e flag to calculate values at edges by @metzm in (PR:166) * G80:r.slope.aspect: Fix directions in comments by @HuidaeCho in (PR:110) * G80:r.slope.aspect: fix title and color table for -n flag by @petrasovaa in (PR:320) * G80:r.stats.zonal and v.vect.stats: Improve documentation and interface by @wenzeslaus in (PR:1114) * G80:r.sun: allow user to set solar constant by @petrasovaa in (PR:482) * G80:r.sun: fix copy paste error when using both lat and lon raster by @petrasovaa in (PR:92) * G80:r.sun: Fix parallel computation by @aaronsms in (PR:1514) * G80:r.terraflow: remove print "Free Memory" to stats file by @nilason in (PR:1306) * G80:r.topidx: fix bug with steep slopes by @petrasovaa in (PR:193) * G80:r.topidx: Rewrite Perl scripts in Python 3 by @HuidaeCho in (PR:766) * G80:r.to.vect: break line when value changes by @byronbest in (PR:113) * G80:r.univar: support large regions with more than 2 billion cells for extended stats by @metzm in (PR:672) * G80:r.viewshed: limit viewshed horizontally by specifying two angles by @petrasovaa in (PR:180) * G80:r.unpack: sys.stdout.write() cannot print bytes; convert f.read() to str by @HuidaeCho in (PR:577) * G80:r.watershed: Update the drainage figure by @HuidaeCho in (PR:603) * G80:r3.out.vtk: replace 'void *' with 'RASTER3D_Map *' for clarity by @nilason in (PR:1291) * G80:v.category: message fix by @jidanni in (PR:618) * G80:v.colors: Fix color inversion by @HuidaeCho in (PR:1478) * G80:v.colors: Implement rules from stdin by @HuidaeCho in (PR:1389) * G80:v.colors: raster= with use=attr by @HuidaeCho in (PR:1393) * G80:v.db.addtable: Overwrite newly created cat column (Fix #567) by @HuidaeCho in (PR:571) * G80:v.db.droprow: remove randomness from testsuite to fix failing tests by @petrasovaa in (PR:1824) * G80:v.db.droptable: check if map exists by @wenzeslaus in (PR:107) * G80:v.db.join: Use case insensitive comparison for columns by @wenzeslaus in (PR:1409) * G80:v.db.select: Add -e flag (escape newlines and backslashes) and -j flag (JSON output) by @HuidaeCho in (PR:476) * G80:v.db.select: Handle all formats through option, add CSV by @wenzeslaus in (PR:1121) * G80:v.db.select: Run grass_indent.sh on the source by @wenzeslaus in (PR:1138) * G80:v.db.update: Use case insensitive comparison for columns by @wenzeslaus in (PR:1413) * G80:v.decimate: copy tables only when topology is available by @metzm in (PR:331) * G80:v.digit: fix testing empty input by @petrasovaa in (PR:469) * G80:v.distance: Linear matrix becomes default, new -s flag for square matrix [API change] by @mlennert in (PR:601) * G80:v.edit: Add credits for extend tools by @HuidaeCho in (PR:446) * G80:v.generalize: remove_small is no longer available by @HuidaeCho in (PR:473) * G80:v.hull: use standard C boolean type by @nilason in (PR:1567) * G80:v.import: Add layer to the projection check by @wenzeslaus in (PR:1328) * G80:v.import: Do not reproject if projections match by @marisn in (PR:845) * G80:v.import: fix gfs file for GDAL version smaller 2.4.1 by GML import by @anikaweinmann in (PR:386) * G80:v.in.ascii: include values into the message by @wenzeslaus in (PR:104) * G80:v.in.ascii: user likely expectes number of rows used by @wenzeslaus in (PR:108) * G80:v.info: fix printing UTM zone (#892) by @metzm in (PR:977) * G80:v.in.ogr: fix usage of OGR_G_HasCurveGeometry() by @metzm in (PR:267) * G80:v.in.pdal: cast enum value to int by @nilason in (PR:1819) * G80:v.in.pdal: fix filtering by bbox by @petrasovaa in (PR:359) * G80:v.in.pdal: remove obsolete PCL functionality by @marisn in (PR:1907) * G80:v.in.wfs: add options to set user and password by @anikaweinmann in (PR:808) * G80:v.kernel: add output raster history by @petrasovaa in (PR:111) * G80:v.kernel: fix inconsistent msg by @neteler in (PR:825) * G80:v.neighbors: add aggegate statistics on attribute colum [NEW FUNCTIONALITY] by @mlennert in (PR:534) * G80:v.net: fix for Python 3 by @petrasovaa in (PR:279) * G80:v.net.visibility: fix coordinates parameter by @agiudiceandrea in (PR:1336) * G80:v.out.ogr: export datetime attributes as datetime by @metzm in (PR:184) * G80:v.out.ogr: Remove a garbage character from warning by @HuidaeCho in (PR:1886) * G80:v.patch: add details into error messages by @wenzeslaus in (PR:103) * G80:v.patch: Fix line categories when building topology by @HuidaeCho in (PR:374) * G80:v.patch: fix segmentation fault when DB table absent in one input map by @metzm in (PR:1492) * G80:v.patch: match map to column (fixes 6616daa) by @wenzeslaus in (PR:109) * G80:v.perturb: Require either explicit seed or generated seed by @wenzeslaus in (PR:1661) * G80:v.random: finished test in reference to #704 by @SunveerSingh in (PR:1464) * G80:v.random: Fix segfault as per bug #1024 by @marisn in (PR:1025) * G80:v.rast.stats: raise a warning when no categories found in raster map by @pesekon2 in (PR:1258) * G80:v.report: Add separator= option by @HuidaeCho in (PR:1412) * G80:v.report: Fix newline issue by @HuidaeCho in (PR:477) * G80:v.surf.bspline: fix method selection by @neteler in (PR:727) * G80:v.surf.idw: fix using potentially uninitialized ret value causing bogus warning by @petrasovaa in (PR:1541) * G80:v.surf.idw: indent with indent script by @petrasovaa in (PR:1540) * G80:v.surf.idw: less confusing error message by @neteler in (PR:1332) * G80:v.to.db: Add --overwrite to help and GUI by @HuidaeCho in (PR:807) * G80:v.to.db history support files by @HuidaeCho in (PR:486) * G80:v.to.db: Require --overwrite flag to overwrite existing columns by @HuidaeCho in (PR:487) * G80:v.to.db: Write history by @HuidaeCho in (PR:481) * G80:v.to.rast by @metzm in (PR:173) * G80:v.to.rast: fix where selection by @metzm in (PR:259) * G80:v.to.rast: Print the correct option name by @HuidaeCho in (PR:1351) * G80:v.unpack: sys.stdout.write() cannot print bytes; convert f.read() to str by @HuidaeCho in (PR:577) * G80:v.vect.stats: Add current mapset in msg, fixes for doc by @wenzeslaus in (PR:1137) * G80:v.what: Fix script outputs for -d (space after = or : instead of =) by @HuidaeCho in (PR:1584) * G80:v.what.rast: fix writing of map history by @HuidaeCho in (PR:584) * G80:v.what.rast: no features message wording, switched to be a warning by @landam in (PR:1323) * G80:t.info: add list of band names by @metzm in (PR:1862) and (PR:285) * G80:t.info: clarify 'dataset not found' error message by @landam in (PR:1473) * G80:t.list, t.rast.list: fix missing band_reference by @neteler in (PR:206) * G80:t.rast.export: use CWD as crossplatform default directory by @ninsbl in (PR:1817) * G80:t.register: strip newline from list of maps to avoid error by @petrasovaa in (PR:1295) * G80:t.remove: new implementation of flags by @lucadelu in (PR:1695) * G80:t.upgrade: added from addons by @neteler in (PR:1438) and by @landam (PR:1468) * G80:t.vect.algebra: modified html doc by @nobeeakon in (PR:1089) * G80:t.vect.export: GPKG support added by @neteler in (PR:129) ==== GUI: Improvements in the Graphical User Interface ==== * **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/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 gcmd.py 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 grass.app by @wenzeslaus in (PR:1358) * wxGUI: Add missing title params to frames by @wenzeslaus in (PR:1301) * 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 https://trac.osgeo.org/grass/ticket/3894 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 frame.py to use DataCatalog panel from catalog.py 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/datalog: fix crashing due to accessing GUI from other thread by @petrasovaa in (PR:1027) * 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: 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, https://trac.osgeo.org/grass/ticket/3981 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 ps.map 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/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: 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 r.li.setup: 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/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) * wx.Menu.Append: remove text argument by @landam in (PR:335) * 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) ==== 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) * python gunittest: Add a new assertion for raster equivalence by @marisn in (PR:1148) * 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/raster.py: Fix encode string by @tmszi in (PR:738) * 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) ==== Binder ==== * 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) * Session initiations functions for Jupyter Notebooks by @chaedri in (PR:1629) ==== User Manuals - Documentation ==== * Add CONTRIBUTING file with a standard contributor Git how-to by @wenzeslaus in (PR:237) * grass7 manual: document --config parameters by @neteler in (PR:532) * GRASS GIS Quickstart by @lindakladivova in (PR:1577) * Fix link to startup script manual page by @veroandreo in (PR:1875) * full index manual: add missing pages by @neteler in (PR:258) * G80:db.drivers: manual updated by @jidanni in (PR:212) * G80:g.access: manual updated by @jidanni in (PR:209) * G80:g.gisenv: manual updated by @jidanni in (PR:219) * G80:g.manual: manual updated by @jidanni in (PR:207) * G80:grass7: manual updated by @jidanni in (PR:220) * G80:helptext: manual updated by @jidanni in (PR:614) * G80:i.eb.hsebal01: manual updated by @jidanni in (PR:213) * G80:i.evapo.pm: manual updated by @jidanni in (PR:214) * G80:i.smap: manual updated by @jidanni in (PR:215) * G80:r3.out.bin: manual updated by @jidanni in (PR:216) * G80:r.carve manual: fix example for stream vector by @neteler in (PR:968) * G80:r.clump manual: screenshots added by @neteler in (PR:902) * G80:r.cost manual: explain multiple directions by @metzm in (PR:846) * G80:r.horizon manual: explain negative values by @neteler in (PR:754) * G80:r.import manual: explain missing resampling methods by @neteler in (PR:1557) * G80:r.in.gdal: manual updated by @jidanni in (PR:621) * G80:r.mask: manual updated by @ecodiv in (PR:1861) * G80:r.out.gdal manual: added COG example by @neteler in (PR:1554) * G80:r.plane manual: example improved by @neteler in (PR:900) * G80:r.random*/r.surf. * G80:manuals: examples and screenshots added by @neteler in (PR:1542) * G80:r.region: manual updated by @jidanni in (PR:600) * G80:r.series: manual updated by @ecodiv in (PR:1246) * G80:r.stream.extract: Fix typos in the manual by @HuidaeCho in (PR:1352) * G80:r.volume manual: example and screenshot added by @neteler in (PR:903) * G80:variables manual updated by @jidanni in (PR:218) * G80:variables manual updated by @jidanni in (PR:222) * G80:v.category manual updated by @jidanni in (PR:607) * G80:v.db.addtable manual updated by @jidanni in (PR:211) * G80:vectorintro manual updated by @jidanni in (PR:224) * G80:v.edit: Change -t to -b in the manual by @HuidaeCho in (PR:471) * G80:v.edit manual updated by @jidanni in (PR:208) * G80:v.edit manual updated by @jidanni in (PR:223) * G80:v.extrude manual updated by @jidanni in (PR:210) * G80:v.import manual updated by @jidanni in (PR:221) * G80:v.info manual: note on -c flag added by @neteler in (PR:198) * G80:v.in.wfs manual: fix example by @neteler in (PR:809) * G80:v.lrs.label manual updated by @jidanni in (PR:217) * G80:v.to.rast manual: update example to NC dataset by @neteler in (PR:1053) * howto_release converted to MD incl cleanup by @neteler in (PR:96) * manual: add 'plot' keyword by @neteler in (PR:1087) * manual: comment out SVN Date tag by @neteler in (PR:200) * manual: crosslinks and keywords added by @neteler in (PR:162) * manual: fix wrong input param in examples by @neteler in (PR:199) * manual: improved HTML page headers by @neteler in (PR:946) * manual: PROJ related links update by @neteler in (PR:268) * manual: put module name at first position by @neteler in (PR:248) * manual: revert further pages entry addition by @neteler in (PR:271) * manuals and docs: update broken URLS by @neteler in (PR:1003) * manual typo fix by @hellik in (PR:1268) * mkhtml: enable path setting for footer html pages (topics.html...) on add-on manual page by @tmszi in (PR:1122) * tools/mkhtml: fix src and src commits url in html addon module manual by @tmszi in (PR:987) * tools/mkhtml.py: fix keywords html pages paths if add-on html man page strored on the server by @tmszi in (PR:1165) * tools/mkhtml.py: fix replacing keywords (no keywords) html pages path if add-on html man page stored on the server by @tmszi in (PR:1172) ==== Projection support ==== * PROJ6+ + WKT2 support by @metzm in (PR:118), (PR:183), (PR:1240) * CRS management by @metzm in (PR:976) ==== 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 ==== * postgres driver: Assign 1000 to TEXT field length by @HuidaeCho in (PR:412) ==== 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) * 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 G__make_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) * lib/init: fix run py script with CRLF line terminators ('grass --exec file_with_CRLF.py') by @tmszi in (PR:860) * lib/init/grass.py: 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: 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 / gdal.c: add recent GDAL dlls by @ninsbl in (PR:1874) * Lib: Speed up listing a lot of mapsets by 20% by @marisn in (PR:281) ==== 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 & v.surf.rst) (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) * 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) ==== 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 grass.py 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) * 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) * 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) ==== Portability ==== MS-Windows: * Apply more osgeo4w patches by @ninsbl in (PR:1921) * Apply patches from OSGeo4W upstreams by @ninsbl in (PR:1880) * gdal.c: add .so/.dll for GDAL 3.0 by @rouault in (PR:191) * mswindows: crosscompile under WSL by @HuidaeCho in (PR:1940) * mswindows: Update crosscompile.sh to 8.0 by @HuidaeCho in (PR:1876) * mswindows: Update crosscompile.sh to the master branch of MXE by @HuidaeCho in (PR:1939) * OSGeo4W BAT files review by @landam in (PR:437) * OSGeo4W workflow for GitHub Actions by @HuidaeCho in (PR:692) * update wingrass installer to osgeo4w v2 + drop 32bit by @landam in (PR:1904) * Cross compilation by @HuidaeCho in (PR:257) * crosscompile: Support for BusyBox for Windows by @HuidaeCho in (PR:1946) Mac: * 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) ==== Docker support ==== New: Docker images are now built for the 8.0 branch. Docker: * 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) Singularity: * added singularity file by @lucadelu in (PR:181) ==== Message Translations ==== * i18N: sync from Transifex (https://www.transifex.com/grass-gis/grass7/dashboard/) * by @HuidaeCho in (PR:1326), (PR:1465), (PR:1519), (PR:1592), (PR:1676) * by @neteler in (PR:1153), (PR:1011), (PR:124), (PR:158), (PR:169), (PR:559), (PR:697), (PR:87) * update of Latvian language by @marisn in (PR:865) * Support Korean (ko) language settings from g.gui for Windows by @HuidaeCho in (PR:519) ==== Packaging ==== * ... ==== !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) === New Addons since GRASS 7.8.6 === {{{ #!htmlcomment Get from here: ("new addons" tag) https://github.com/OSGeo/grass-addons/pulls?q=is%3Apr+label%3A%22new+addon%22+is%3Aclosed }}} * G8A:xxx === Closed !GitHub tickets since the last release === See [https://github.com/OSGeo/grass/milestone/4?closed=1 GitHub]. For old trac tickets, see below. ==== Closed trac bugs since the last release ==== [[TicketQuery(status=closed&milestone=8.0.0&type=defect&resolution=fixed&order=priority)]] ==== Closed trac wishes since the last release ==== [[TicketQuery(status=closed&milestone=8.0.0&type=enhancement&resolution=fixed&order=priority)]]