All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Fix last migration, invalid request in some db systems
- Fix last migration, remove duplicate directories before adding unique constraint
- Directory list filter
- Improve track list header
- Add unique constraint for directories on user+path
- Avoid mounting App a second time when it's weirdly loaded again when opening the file picker #57
- Fix track list scroll in mobile view
- Ability to toggle tile/vector proxy in the admin settings
- Switch to IAppConfig
- Encrypt api admin and personal keys
- Add csp listener to allow blob worker src domain
- Fix sketchy content-type in proxy
- update composer dependencies
- update npm pkgs
- update osm raster tile server URL
- Switch from Webpack to Vite
- Remove the old UI
- Add 'Origin' header to proxied vector tile requests so Maptiler's "Allowed HTTP Origins" can be used to restrict API keys
- Update translations
- Rename sort_asc and recursive database columns to sort_ascending and display_recursive, make them integeger instead of booleans
- Don't proxy raster/vector tiles in public pages
- OpenCycleMap raster tile server
- OpenStreetMap vector tile server
- Proxy all raster and vector tiles through the server
- Set min and max Nextcloud versions to 30
- fix app navigation toggle style/position in all cases
- fix handling click event on track list item
- update npm pkgs
- use Maplibre-gl v4 and make necessary adjustments to load images (breaking changes)
- fix navigation item label for "/" directory
- add code style and psalm checks actions and fix all psalm errors
- add line arrows spacing and scale user settings
- update nextcloud/vue to 8.5.1
- fix url wrapping in tile server setting item #40 @StefLedof
- fix list style in chromium based browsers
- migrate file actions for NC >= 28
- update nc/vue and make necessary adjustments
- polish many UI elements
- build file picker with @nextcloud/dialogs
- cache geojson conversion results to speed up getting tracks
- make toggleAll faster, only one request to save enabled state of all tracks
- fix toggle terrain in comparison page
- font scale setting
- line borders setting
- line opacity setting
- line width setting
- direction arrows to track lines (optional)
- terrain animation and a custom control
- improve track list item design
- change watercolor url
- improve line border drawing, no more overlap, just a 'casing' around the line, fix opacity when drawing borders
- compute point extension list on the backend side
- fix public track page initial dir selection #31 @nautik1
- fix conditional app content list template, missing main content back button style
- fix style of main content back button in mobile view
- fix image aligment in popups
- New non-compact mode with track list (used by default but can be changed in the user settings)
- Recursive directory loading in the new UI
- Add ability to filter track list
- Implement track comparison in Vue with Maplibre-gl
- Multiselect action in Files to compare tracks
- Remove dependency to SRTM.py, use new Php SRTM elevation correction implementation
- Use MapLibre v3.0.0 which includes many bugfixes and improvements
- Modernize File actions
- Support more GPX point extensions
- Show computed traveled distance
- Support and data extensions in KML conversion
- Add support for KMZ files
- Add support for pictures in KMZ conversion
- Add "traveled distance" color criteria
- New option to set terrain elevation exaggeration
- Ability to manage tile servers in the new UI (personal ones) and in the admin settings (global ones)
- Ability to export a directory as KML or KMZ (with pictures)
- high resolution raster OSM and OCM tile servers
- allow embedding public links into iframes
- Keep name prefix of point extensions
- Refactor track stats computation
- Get rid of Mapbox geocoder, use the one from Maplibre with our own Nominatim search implementation
- Adjust Files integration to open the new UI
- Lots of UI improvements
- Make sure vector images and terrain source are removed before loading them again
- fix password protected public share and allow it to be in iframes
- string sanitization fails when string is too long
- fix some exception in geophoto processing not being caught
- support multi domain URLs for raster tile servers
- support for GPX routes in the new UI
- support for waypoints in the new UI (with custom symbol support)
- add nominatim search in mapbox geocoder control
- native conversion support for Garmin FIT files
- add ability to use GPX extensions as color criteria (FIT files provide a lot of them)
- make lines bigger on hover
- get photos direction and show it in their popup
- ability to choose between ascending and descending track sort order, per directory
- implement track deletion and selected tracks deletion
- ability to choose a track extension as a new chart dataset
- setting to choose between local or global colorization (useful for tracks with multiple segments)
- new Php implementation of SRTM elevation service
- do not proxy map tile requests anymore
- improve marker clusters style
- make it possible to prefer native conversions instead of attempting to use GpsBabel
- rewrite Files script without JQuery
- refresh the screenshots
- refactor the track data and metadata structures
- apply distance and elevation unit conversion
- hide chart scales and allow to show a specific one
- provide map service API keys to public pages
- track navigation item avatar style
- avoid loading Files scripts/style when the app is disabled for the current user
- handle many cases where there is missing data (chart, gradient lines etc...)
- fix buggy colored tracks by using line-gradient on entire layers (replace over-complex previous components)
- safer track processing #13 @kekonn
- screenshot URLs for the appstore
- fullscreen control
- update npm pkgs
- modernize sql queries
- lazy load parts of frontend scripts
- fix terrain toggling with terrain control (not documented in maplibre)
- fix default param value on non-terminal-position param #12 @Synochy
- make sure the database schema is cleaned up for those having installed a recent nightly #7 @umgfoin
- fix controller annotations #6 @laurensbl
- safer migration if a nightly > 5.0.0 was installed before
- new UI in Vue, use maplibregl-js
- a few adjustments in the old UI to work with NC >= 25
- bump max NC version
- clarify package.json
- redraw all track when any drawing option changes #220 @notEvil
- convert track id to string in drawing functions #225 @jmechnich
- improve code quality
- fix mistake when getting program path. it was miraculously working with Php < 8 !187 @tasnad
- fix comparison geojson data injection in UI, use initial-state #207 @julien-nc
- resist to invalid gpx data (missing coords or time) in comparison #207 @julien-nc
- jquery-ui import #215 @JensErat
- replace $.ajax() by @nc/axios
- use NC webpack/lint configs
- bump max compatible NC version
- passes lint checks
- sidebar style in comparison page
- bug when displaying routes
- black theme
- adapt to NC 20
- convert GPX speed in tooltips
- big improvement in cumulative elevation gain and max speed algorithms #195 @tonda2
- avoid crash by checking if exif functions are available #192 @IlRoccOne
- respect open_basedir Php setting #193 @IlRoccOne
- add potentially missing DB field if there was a big jump in versions #196 @luciocarreras
- problem with postgresql when running migration scripts #186 @EmJothGeh @mjanssens @r100gs
- switched to webpack
- improve chart hover information design
- disable caching, hover points and chart drawing when adding all tracks at once #184 @googol42
- option to toggle referrer sending
- display point information on hover
- remove IGN from default tile providers
- use standalone Viewer for pictures if possible
- tooltips design
- use photos app instead of gallery if possible
- use public templates for public pages
- mechanism to send referrer !177 @MayeulC
- dates were always displayed with UTC timezone #175 @gegeweb
- color changing
- fix dark theme compat
- sort directories by name #182 @nemihome
- PhpUnit tests
- option to select all tracks after folder change #170 @klakla2
- vector tile support with Mapbox and OpenMapTile servers #133 @labero
- use IQueryBuilder for DB queries
- default sort order: date desc
- able to choose what to draw: tracks, routes or waypoints or all
- kml fallback conversion
- photos look much better now (rewritten from scratch)
- show photo dates
- store non-geotagged pics in DB to avoid parsing them on each folder load
- delete DB picture entry when file does not exist anymore
- improve picture tooltip design
- improve exif reading, make it default and use Imagick as fallback
- improve max speed calculation (accumulate 3 segments) #156 @fragadass
- improve cumulative positive elevation gain/loss (consider gain/loss only if done in more than 50m)
- generate metadata when visiting public pages #161 @klakla2
- Deletion query problems again with SQLite #162 @tuxra
- PostgreSQL compat #162 @severinkaderli and @doc75
- no more automatic folder list, manual adding + recursive adding + optional recursive display #157 @tropli
- optimize picture management, store coords in DB to avoid reading files on each load #157 @tropli
- make showmounted, showshared and showpicsonlyfold true by default
- improve options design
- improve padding on automatic zoom
- a few translatable string in UI
- fix picture names with quotes inside #157 @tropli
- fix files/folders names with quotes
- max NC version: 16
- app icon
- improve option toggle title design
- make app description translatable
- fix bad float formatting when generating markers information #146 @KapiteinHaak
- fix track drawing and marker stats when some lat/lon are missing
- default sort by date
- add opentopomap tile server #137 @dmsoler
- update max zoom for base tileservers
- change a few tile servers to https
- fix script loading which was leading to css conflict in spreed app #139 @lachmanfrantisek
- add option to toggle folders with pictures only #131 @e-gor
- replace tablesorter with sorttable
- bump to NC 15 #136 @klakla2
- add options to toggle shared files display and external storage exploration #124 @tavinus
- add links to tile servers and WMS (OSM wiki)
- now able to select a folder with only pictures
- update leaflet to 1.3.4 and leaflet.polylinedecorator
- better SQL queries design
- improve style, adapt to theme with css variables
- use php-imagick in priority if available
- use NC logger for gpx parsing errors and more
- put SRTM cache in data directory
- improve option management, save only what's needed, use NC user config system
- correct filetypes action icon (context menu in Files app)
- avoid jpg to gpx conversion
- fix Imagick presence detection
- remove OC_App which was here just for ownCloud compatibility which was dropped
- preserve aspect, avoid cropping of geotagged pictures except in popup #51 @hk10
- zoom on pictures when there is no track
- no more temporary directory to read pictures exif data #129 @GAS85
- no more temporary directory to convert kml and tcx files
- no more temporary directory at all
- track table overflow : scroll
- make notifications look like PhoneTrack's ones
- sidebar style problems with NC14 #120 @julien-nc
- fontawesome missing icons
- new color criteria : extension #109 @jkaberg
- add support for link tag in tracks, routes and waypoints #74 @julien-nc
- add moving average pace to popup table #107 @Speranskiy
- improve tcx convertion, handle Activity tag
- auto zoom now includes pictures #103 @jeekajoo
- update svg icons
- set max width of images in popups : 300px #115 @geotheory
- upgrade fontawesome
- adapt to NC14, drop OC (sorry), drop NC<=13 #120 @julien-nc
- use waypoint style for route points #99 @Robtenik
- fix pace for routes
- bug in gpx parsing, update end date after each trkseg
- in gpx content : replace xml version attribute to 1.0 when it's 1.1 #104 @cbosdo
- fix bug when bad color criteria values, check for infinity #110 @Vebryn
- fix 'share button' disapearing from track table #112 @Gymnae
- fix generic 'false' value in SQL query #117 @wiwiec
- fix label width and word-wrap in right option column #118 @klakla2
- do not disable autozoom when sharing a folder with 'track=all' #121 @hellmachine2000
- use php imagick when exif_read_data fails to read geotags from images #114 @ciropom
- option to display route points #99 @Robtenik
- many translations from Crowdin
- NC13 compliant
- improve fallback tcx convertion, handle Activity tag #102 @pipiche
- bug when displaying an empty track
- pace for routes
- gpx parsing, update end date after each trkseg
- fallback IGC parsing without GpsBabel
- follow @dadasign idea of fallback conversion for tcx and kml if gpsBabel is not installed
- ask confirmation before deleting a track
- button to zoom on specific track
- display track when hover on marker
- add button in popups to draw track
- put track buttons (table) in dropdown menu
- change date and number inputs to HTML5 type : number and date
- manage translations with Crowdin
- include line weight in public links
- mistake in OSM fr definition
- correct opencyclemap and transport URLs #91 @LittleHuba
- remove BOM header (making chrom* reject XML) #93 @fti7
- pass custom tile/overlay servers to public pages #95 @lebochequirit
- option to choose which track (PRES or GNSS) is kept for IGC conversion #78 @tomashora
- add pace color criteria (displays the time it took to move the last km/mi/nmi)
- add buttons to reload or 'reload and process' current folder #81 @e-alfred
- add public page url option 'sidebar' which toggles sidebar apparition on page load #86 @Gymnae
- remove X-Frame-Options header for public pages to allow them to be embedded #85 @Gymnae
- update leaflet to 1.2.0
- update sidebarv2
- replace measurecontrol with Leaflet.LinearMeasurement
- remove L.draw
- make call to getMeasureUnit synchronous
- adapt L.Control.Elevation to work with firefox 57
- fix all problems (afaik) related to file names : dict indexes, share links URLs and download links URLs #84 @bperel
- get rid of double quotes in gpx names/strings #88 @klakla2
- zoom issue when loading public pages
- add nautical measure system (knot and nautical miles) #71 @julien-nc
- new button to move selected tracks #73 @julien-nc
- import from gpxedit : support for WMS tile and overlay servers. base and user servers
- display metadata-link in track popup #74 @julien-nc
- dynamic url change when subfolder changes in normal page
- button to clean all tracks metadata in database for current user
- add link to view track in GpxMotion in track table if installed (autoplay) #75 @klakla2
- remove process type choice, modified files are now automatically processed
- update moment timezone js
- style of custom tile server management
- convert kml in Php
- fix leaflet.hotline when min and max values are the same, draw black line instead of failing
- fix bad json when newline in gpx "name" tag #70 @markuman
- hide custom tiles management and clean buttons when page is public
- now passing simple hover option value to public pages
- button to delete individual track with confirmation #54 @AlterDepp
- optional direction arrows along track lines
- new feature : add personal overlay tile server #66 @Demo82
- delete the selection now asks for user confirmation #54 @AlterDepp
- move tile/overlay server list from JS code to PHP file, now easier to modify #66 @Demo82
- remove deletion confirmation as it is possible to restore files in files app
- check if bounds are valid before fitBounds
- bad date formats were rejected by new moment.js
- adapt css for Nextcloud 12, still works with 11
- overlapping of xAxis title with axis values in elevation graph
- remove all synchronous ajax calls
- new picture display mode : spiderfied popups
- option to select between preview or original picture in colorbox #51 @hk10
- timezone support in elevation time in chart #52 @RobinP_1
- support english measure system in gpxpod and gpxvcomp #53 @brianinkc
- pass many options with GET parameters to publicFolder and publicFile links #56 @klakla2
- option to toggle chart display
- add extra option to publicFolder : "track=all" to display all tracks on page load #56 @klakla2
- add buttons to select/deselect all tracks #59 @simsalabimbam
- add button to delete selected tracks files #54 @AlterDepp
- add little python script to check useless/missing translations for a specific language
- extract pictures geotagging information with Php, no more GpsBabel needed for that #50 @hk10
- in public folder page, only show directory name instead of the whole path
- adapt makefile to include Owncloud code signing
- make different build archives for Nextcloud and Owncloud
- compatibility with Owncloud was broken because of appManager-getAppPath() in controllers
- small design fixes in gpxvcomp
- if file/folder is not shared in Files app, no GpxPod public link is generated
- fix publicFolder and publicFile to work with folders/files shared with the user who made the public share #55 @klakla2
- download url in public pages was wrong if "path" GET parameter was empty or absent
- make temp dirs independent from nextcloud/owncloud data dir to fix issues with LDAP users #58 @Demo82
- fix all french translations
- parse gpx content as xml to correctly read potential CDATA
- bad GET parameter name for layer name in public links
- integration in "Files" and "File sharing" for .gpx files and directories #44 @rugk
- add gpx filetype icon for Files app
- animation when toggle option
- animation when add/remove tile server
- makefile signs the app code
- spiderfication of picture markers with OverlappingMarkerSpiderfier-Leaflet #47 @RobinP_1
- get rid of python geotagging extraction script (pictures.py), now done by gpsbabel
- use OC alert instead of JS alert
- update french translations
- reimplement public link system with "Files" token
- favicon background color
- update geocoder
- ask for preview instead of original image : faster loading in colorbox
- bad use of array_map in controller
- in some browsers, background-image for picture in popup was not shown #46 @RobinP_1
- bad decodeURI => decodeURIComponent
- do not put @NoCSRFRequired everywhere in controllers
- remove escapeshellcmd which escapes characters in file names, keep escapeshellarg
- add support for FIT files #42 @pvanek
- click on color in track table allows user to change the track color #41 @coelner
- add loading percentage near spinner when getting tracks
- add loading percentage when hovering to get tracks
- factorize all gpsbabel conversions in controller
- make tooltip class dynamic so they follow the track color wether it's choosed by user or no
- factorize addtrack* code
- cleaner elevation chart, title, axis titles, margins
- stop hover ajax when removing mouse from table line
- app is now compliant to occ check-code
- add margin to popup title to avoid overlay with popup close button #40 @coelner
- line borders for simplified hover
- fix mess between hover and elevation correction, now impossible to hover when correction was asked
- fix bad management of gpxelevation exec failure
- better deletion of temporary directories in cache
- IGC file type support #38 @tomashora
- add option to draw simplified track on hover instead of downloading the whole track #36 @Slipeer
- put title in elevation/speed chart to remind which track is concerned
- save/restore current selected tile layer in user options
- replace checkbox by spinner when track is loading #36 @Slipeer
- zoom on all tracks already drawn when autozoom on a new track
- change osmfr tiles url to https, update hikebike url #37 @Slipeer
- support milliseconds in gpx time #34 @akki42
- bad number formatting caused wrong elevation display when >1000 #33 @FAllemandou
- remove useless libxml_use_internal_errors call to support more php versions #39 @FAllemandou
- keep showing loading animation untill there is no more track loading (when multiple)
- option to toggle track line border
- option to choose track line width
- line borders
- display marker name in marker popup
- russian locale #29 @Slipeer
- no more python marker processing, done in PHP by the controller
- no more python track translation to geojson, let the JS parse the GPX
- no more python track comparison, done in PHP by the controller
- display question mark image if symbol is unknown
- graph shows speed values if colored by speed
- remove slope coloration criteria
- no embeded gpx data in public dir page anymore, use ajax requests
- elevation correction creates new files with "_corrected" in their name
- use moment.js just for valid dates
- escape and quote DB strings with abstract DBconnection (advised by @Slipeer) #30 @julien-nc
- add symbol (sym tag) support #28 @julien-nc
- link to edit in GpxEdit if installed
- support for GpxEdit extra symbols
- clear cache if process all files
- bugs when subfolder is /
- bad initialization of default marker style in public pages
- send referrer, IGN tiles work now
- add track/route list for a file in its popup
- show track/route/waypoint comment and description in popup
- add track/route name in line tooltip
- add elevation/slope/speed in line tooltip for colored drawing
- add leaflet.measurecontrol plugin #26 @julien-nc
- update Control.Minimap
- don't show elevation and popup if there is no route/track but only waypoints
- highlight line on hover
- move share and elevation correction links from popup to table
- adapt share dialog text : none if verified, explain if share is impossible
- fix problem on parsing gpx with no track/route/waypoint
- fix huge bug when selecting root folder, getmarkers and processTrackElevations fixed
- fix bug when trying to color tracks when the values does not move or is always 0
- handle routes for colored draws and fix mistakes on min/max values
- correct date begin/end : use date comparison instead of track/route apparition order
- mistake on waypoint style for colored tracks, tooltip was always non-permanent
- python script now writes utf-8 files
- global stats in python script are now really global for all tracks/routes
- bugs in marker generation
- save/restore options for logged user
- option to choose picture style (popup/small/big marker) #25 @julien-nc
- add average speed and average moving speed in comparison table
- bug when python PIL is not available
- deletion of bad parameter given to getGeoPicsFromFolder() in controller #20 @julien-nc
- bug in file cleaning, bad use of array_unique #22 @julien-nc
- python script do not need to be exectuable now #23 @julien-nc
- jquery.colorbox was brought by "First run wizard" app, now included #21 @julien-nc
- avoid JS error when failed to get options values by ajax
- option to choose waypoint style
- show elevation, lat, lng in waypoint popup
- ability to display geotagged jpg pictures on the map
- pictures slideshow with colorbox
- pictures work in public dir link
- use NC/OC thumbnails to display pictures on the map
- options block hidden by default
- fix bug in geojson generation for waypoint-only files
- fix marker generation for gpx files with waypoints only
- improve waypoints display : use tooltips, limit text width, same color as the track
- add option to choose whether track or waypoints or both should be displayed
- clean DB from unexisting files on main page load
- fix z-index problems in UI
- update to Leaflet 1.0
- update MarkerCluster and ActiveLayer Leaflet plugins
- remove ActiveArea Leaflet plugin
- add Leaflet tooltips to tracks and markers (in comparison too)
- add caching for colored tracks
- show elevation graph for colored tracks
- change Jquery-UI button for normal ones
- put more colors in UI
- improve time display in Elevation Leaflet plugin
- larger checkboxes, smaller popups
- keep state of autozoom, autopopup, tableUTD, activeLayer in public folder link
- fix public links with spaces
- responsive design improved (sidebar and layer control)
- add icons
- check if file/folder is shared in Files when creating the gpxpod public link
- add lots of icons
- fix small design issues
- custom tiles servers changes now take effect directly
- add german translation
- translation system ready, french and english languages available
- show elevation chart by default
- improve public link display, now shows a dialog
- use fontawesome icons for loading animation ,share links, + and - buttons etc...
- design simplification in comparison
- highlight stat table columns of selected tracks in comparison
- zoom to fit markers after folder change
- cleaner sidebar tabs content
- make SQL queries compatible with PostgreSQL
- now works if app is installed in alternative app folder
- now able to list track that cross current map view (useful to find tracks that pass through a precise area)
- add version display in UI
- split controller code in three parts
- fix bug on undefined index with some php configurations
- improve public track link (coloration added)
- add public folder link feature !
- if SRTM.py is installed and gpxelevations is found in PATH, add process options to correct elevations
- ability to ask elevation correction for one specific track in its popup
- add ability to add/remove personal tile servers
- small design changes and cleaner UI behaviour
- public links now work with files in a shared folder (with public link without password)
- make database queries compatible with MySQL
- add favicon for browser tab
- add cache in UI to load a geojson faster if it has already been loaded
- add global stats in a table to compare entire tracks
- fix small gaps in comparison values between divergent and non-divergent parts
- add buttons to delete all geojson and markers files
- now uses the owncloud database to store geojson data and markers. faster and transparent.
- clean database from tracks if the file was deleted
- fix display bug in public link
- new feature : gpxpod allows to share a public link of a track (.gpx .gpx.geojson and gpx.marker have to be publicly shared in files)
- now works with encrypted data folder (server side encryption)
- now considers files shared with you and files in folders shared with you
- few bug fixes
- add timezone support in gpxpod : automatic browser timezone detection and manual timezone change in UI. Specify current timezone in displayed dates.
- add timezone support in gpxvcomp : uses browser timezone to display dates
- add option to list tracks in left table if their bounds rectangle is partially visible
- fix bug on nested gpx directories. markers are not found recursively anymore
- design is now more compact
- text changes
- add option to choose wether the table shows all tracks or juste the one visible in current map view
- animate logo when loading
- gpx comparison revolution ;) now really compare pairs, faster display (better geojson produced), no more color mistake...
- small fixes, text, colors
- chrome(ium) JS compatibility
- fixes in track comparison
- add .tcx files compatibility (convertion with gpxbabel)
- better error display in python process
- fix small distance calculation problem (negative cosinus...)
- python process interruption if multiple calls
- better marker production, speed improvement
- easier folder selection in UI
- make folder change dynamic with ajax calls
- improve python compatibility (<2.7) and error management
- display python output in UI
- fix bug : nested php calls sometimes producing 'Only variables should be passed by reference' error
- move arrows in table header to avoid text to be hidden
- fix python script : fallback to classic map is multiprocessing is not available or Pool does not work (CentOS issue)
- Fix bug with OC method
- now considers files with uppercase extensions
- ability to select track scan type (none, new tracks only, all)
- leaflet geocoder (to search for locations) works
- changed default map to openstreetmap
- display time in elevation chart label
- remove personnal import of jquery that caused menu bug
- adapt gpxvcomp to gpxpy problem with course tag
- fix latest gpxpy failure caused by float in "course" tag
- python3 compatibility
- track processing more resistent to malformed gpx files
- cleaner MVC implementation
- included automatic KML convertion if GPXBabel is found on the server system
- removed yield operator to make GpxPod compatible with more PHP versions
- Updated leaflet from 0.7.3 to 0.7.7
- fix bad url for files download links
- Works for any data folder location config
- Compatible with more php versions (in reaction to 'slapps' bug report)
- List all directories that include gpx files. No more restriction on file organization.
- Trying to respect coding rules
- Security might be ok
- Integration of track divergence comparison (gpxvcomp)
- Visual info during loading