See the pytrainer roadmap for more information http://sourceforge.net/apps/trac/pytrainer/roadmap

- pytrainer changes for 1.9.1:

* Known issues

    - Can't maximize main window. Issue related to graph subtab in register tab - tickets #113 #124

* Fixes

    - Corrected german localization (thanks to Andreas) - [938]
    - Amended typo in translator credits - [937]
    - Coloring graph not working when selecting speed as reference - #154 [936]
    - Added support for sqlalchemy-migrate 0.5.4 - #153 [935] 


- pytrainer changes for 1.9.0:

* Known issues

    - Can't maximize main window. Issue related to graph subtab in register tab - tickets #113 #124

* New functionality or improvement

    - Updated DE localization. Thanks to Erik Pfannenstein from Debian DE group and Andreas Mair - [923] [927]
    - Added portuguese localization (thanks to Pedro Ribeiro) - [896]
    - Option added in localization script (utils/translator.sh) to generate only .pot file - [888 - 892] 
    - Galician localization (thanks to Kaptan) - [885 - 887] [893]
    - Manpage for pytrainer - #125 [872] [874]
    - Create sport service - #138 [838] [840 - 845] [850] [850 - 856] [875] [880]
    - Provide means to run all unit tests - #139 [837]
    - Discrete version migration - #132 [815 - 836] [839] [864] [865] [899 - 906] [911]
    - Totals tab - #60 [766] [800] [801] [802] [803]
    - Display projected times in record view, including ranking - #116 [782] [785] [811]
    - Ascent and descent figures shown in all views. Added time spent moving and paused in record view (thanks to Friso) - #114 [781]
    - Assign graph color to sports - #111 [780]
    - Display laps information on record summary page - #109 #122 [768 - 772] [775] [777] [778] [788] [812] [813]
    - Coloring Google Maps path by speed/pace - thanks to Jonathan - #107 [765] 
    - Added swedish localization (thanks to Per) - #98 [756 - 760]
    - Added startup option for choosing console or file logging. When "console" is chosen all logging messsages are sent to stdout instead of a log file. [755]

* Fixes

    - Syncing calculations of distance, time, speed and pace. Normalized pace format - #71 #152 [916] [918 - 919] [922] [924] [928]
    - pytrainer quits when exporting activities in csv format [912]
    - Importing TCXv2 files failed - [907 - 909]
    - Date value was not saved in "Athlete" tab - #149 [898]
    - Fixed encoding issue that prevented some days of the week and associated information to be shown in stacked bars graph under week tab [897]
    - Cannot edit record created from GPX import with null sport reference - #147 [881]
    - pytrainer crashes when closing edit record dialog - #146 [879]
    - Added zero padding to overcome lap order issue - #145 [878]
    - Updated french localization - thanks to Vincent, Pierr [876] [895]
    - Heartrate figures from profile are retrieved independently so only those which fail are set to default value [873]
    - Active/Rest times are not calculated for activities with only one lap - [811]
    - Activity's data (equipment and title) missing when importing activity from file - #105 #137 [866 - 868]
    - Wrong duration calculation when breaks are present - #103 [858 - 862]
    - GUI problems when resizing - #113 [857] [877] [882]
    - GPX file import fails - #141 [849]
    - Enabling localization for some labels - #99 [846] [847]
    - Broken MySQL support - #130 [810] [817] [818]
    - Moving from GtkMozEmbed to WebKit - thanks to Christian - #131 [809]
    - Support US units and display units in analytics view - [808]
    - Start time can be changed in manually entered activities - #127 [807]
    - Sort records in record tree view by time by default - #128 [806]
    - Graphical improvements - [795] [796] [797] [798] [799] [805]
    - Improved OSM performance through caching and also anonymize sensitive date before upload - [790] [791] [792]
    - Failed to build stacked bars graphic in week, month and year tabs - #123 [789]
    - Changed the way OS is checked to allow pytrainer run on other POSIX in addition to GNU/LINUX - thanks to Christian - #120 [784]
    - Renaming danish suffix in po file to avoid confusion - #119 [783]
    - Try using Google Maps Elevation API if all else fails - #102 [779]
    - Updated ES localization [773] [774] [776] [804] [848] [863] [883]
    - Better management of wrong/corrupted data - #118 [767] [786] [787] - [793] [794]
    - Elevation correction extension not handling properly errors #102 [764]
    - Equipment management fixes - #95 [763] #96 [762]
    - Distance data is retrieved from laps if present, calculated from trackpoints otherwise - #101 [761]
    - Remove non iso-8859-1 characters [754]
    - Fix so only once instance of preferences dialog can be open at a time - #74 [753]


- pytrainer changes for 1.8.0:

* New functionality
    - Equipment management (thx to Nathan) [571] [572] [573] [598] [678] [679] [680] [685] [698] [699] [707] [708] [711] [717] [718] #12
    - OpenStreetMap added as route map viewer (user selectable) - thanks to Druzee [578] [585] [590]
    - Anonymous data for OSM, cancel button (thx to Druzee, Arnd) [608] [611] [626]
    - Changes to graphing to allow user to change limits, color, line width etc [563] [567] [579] [599]
    - Remember size of main screen [581]
    - Function to merge tracks (work in progress) [597]
    - New Activity and ActivityPool classes to hold all info about an activity [582] [583] [584] [587] [589] [591] [677] [694]
    - Management of athlete data [605] [609] [649] [651] [653] [655] [656] [665] [668] [731] #13
    - New graphic approach [616] [617] [622] [624] [628] [638] [639] [640] [642] [644] [646] [648] [674] [675] [721] [726] [727] [730] [733]
    - Added support for Nokia exported GPX files [673]
    - Added support for new formats (csv, delimited file) in unified import [688] [689] [690] [692] [693] [695] [697] [701] 

* Fixes
    - Variables and configuration refactored to be 'global' (reused and not re-instantiated by each class) [561] [562] [564] [565] [566] [568] #28
    - Config file accepting non ascii characters [574] [575] [576]
    - Config file handling fixed to not fail with empty or missing file [586] #48
    - Fix list view to update after edit, delete, import. Added filters and improvements (tnx Arnd) [569] [650] [652] [658] [661] [663] [664] [735] [742] [745] [746]
    - Localization updates (thanks to Pierre, David) [570] [588] [595] [715] [737] [744] [747]
    - Fix wordpress extension to work with newer wordpress codebase and support US measurement [577] [601] [602] #45 #51
    - Update plugins to write UTF8 not ASCII GPX files [580] #47
    - Fix googlemaps lap data display [592] [632] [633]
    - Fix calories display in heartrate tab [593]
    - Fix html in map generation (thanks to Druzee) [594]
    - Change default graph colors [596]
    - Improve handling of US units [600] [669] [672] [683] [687] [696] [700] [702] [703] [704] [705] [710] [738] [739]
    - Fix bug in plugins where ESC during file open dialog causes error [603]
    - Fix to garmintools_full plugin to make progress bar work (thanks to Druzee) [604]
    - Avoid exiting when parsing problem is found, entry skipped [607] #
    - Activites without GPX data don't break application [610] [615]
    - Improvements (show and calculation) to pace and elevation as suggested by Arnd [612] [618] [619] [623] [627] [741]
    - Better troubleshooting for graphics issues and minor fixes [625] [629] [636]
    - Fixes to csv export (thx Arnd) [630]
    - Fixes to startup script to better handling different environments [631] [637] [713] [714]
    - Updates to wordpress extension - removed separate googlemaps [634]
    - Allowing zero calories entries [641]
    - Fixes to edit record [643] [647]
    - Fixing confusion with dates (start day of the week, week number) [654] [655] [657] [670] [750] #57
    - Fix for GPX files with no lap info [660]
    - Correction to date handling to work for mysql and sqlite [667]
    - Improving logging output [671] [748] [749]
    - Fix for HR percent graph so does not error in hr is None - thanks to Arnd [676]
    - Bug fixes for sports filtering from Patrick [681]
    - Updates for heartrate pie chart from Patrick [682]
    - Fixes in lap generation (divide by zero, empty laps) - thanks to Arnd [684] [686]
    - Fixes for record filtering from Patrick [691]
    - Tolerate non-unicode strings returned from DB for better MySQL support [706]
    - Add program argument for specifying config directory [709] #67
    - Better handling of floats and division. Thx to Martin [712]
    - Retrieving a real list with DB tables, comparison was failing [716]
    - Remove redundant Port option in preferences [719] #80
    - Fix to display blank sport properties correctly (not as None) [720] #78
    - Fix mysql code to match changes to sqlite tablelist handling [722]
    - Stop preferences sport list edit button disabling dialog buttons if no sport is selected [723] #75
    - Fix to stop crash on editing record with empty distance [724] #73
    - Update record summary after edit [725] #79
    - Fix sport filtering to work with non consecutive sport_ids [728]
    - Fix summary screens to update correctly with record add and deletes [729]
    - Make pace read only [732]
    - Display heartrate as integer in day, week, month and year views [734]
    - Update DB check to ensure time == duration [736]
    - Updating credits [740] [743] 

- pytrainer changes for 1.7.2:

    * Lap DB table created and code changed to populate and use the table [507] [508] [509]
    * Moved some global variables to class variables in main.py [513]
    * Google Earth plugin modified to work with new plugin architecture [515]
    * Waypoint editor modified to use handle_title_changed() call back instead of SOAP calls (thanks to David Fraser) and a few bugs fixed [516] [524] [543]
    * Firefox removed as a dependency [518]
    * Shebang tidied to be compatible with all python versions [520]
    * Extension code refactored to run extensions as internal classes [527]
    * Webservice / SOAP code removed [527] [531]
    * Incomplete webpublish extension removed from svn [528]
    * Upload to Openstreetmap extension added [536], [540]
    * pytrainer startup script modified to work with different install locations [532] [533]
    * Misc fixes and patches to pytrainer (thanks to David Fraser) [524] [530] [535]
    * Add support for with command for python versions <2.6 [541]
    * Removed bug that caused errors for activities with no GPX file [542]
    * Localisation updates [539]
    * New tab in preferences displays and allows changes to be made to pytrainer startup options [544] [545] [546]
    * Move individual screens into separate glade files [547]
    * Full screen map view reinstated [548]
    * Removed DB field order bug [549]
    * Removed fake error when importing entries [550]
    * Minor fixes to graph display options [551]
    * Minor cosmetic changes [552] [553] [554]
    * Added check for early detection of empty local configuration file [555]
    * EXPERIMENTAL Unified Import GUI modifications (disabled by default, enabled on startup with --testimport) [526]
    - file import supports multiple files at once [510] [511]
    - option to have file import window automatically start with a file selection dialog [519]
    - activities can be edited before import [514] [517] [521] [522] [534] [537] [538]
    - kml file import support [523] [525]
    - plugins tab added - provides alternative way of viewing and running import plugins [512]
    - device import NOT functional 

- pytrainer changes for 1.7.1:

    * New import plugin - Garmintools - svn [430], [431], [436], [452], [453], [459], [460], [461], [463], [464], [486], [487], [488]
    - both file (dump file) and device import implemented
    - smart import from device to cater for different start times compared to GPSBabel (to reduce duplicated activities) 
    * Move to Google maps API version 3 - svn [477]
    * Add lap functionality - svn [433], [447], [448], [451], [454], [455]
    - display individual laps under activity on treeview
    - visually display lap duration on record graphs (user selectable)
    - display lap markers on route map 
    * Improve check functionality - svn [437], [438], [439], [475], [478], [479], [480], [482]
    - Can be initiated by command line option --check
    - Will be initiated if DB version in code is newer than user's DB version
    - DB migration checks refactored and improved 
    * Timezone support - svn [434], [440], [442], [483]
    - DB updated with new field date_time_local
    - field populated on import (or when DB check is run)
    - field used in preference to UTC if present for display 
    * Cadence / RPM support and graph added (tcx v2 file import only) - svn [432]
    * Improved install process and remove unneeded files - svn [445], [446], [462], [467], [472], [473]
    * Bug fix to TCX v2 to cater for multiple activities per file - svn [435]
    * Bug fix for calorie calculation - svn [441], [474]
    * Bug fix for migration/new install error bug #2924209 - svn [456]
    * Bug fix for GPX import without elevation data - svn [490]
    * Bug fix to prevent adding empty entries - svn [496], [498], [499]
    * Updated localizations (es, fr) - svn [494], [495], [497]
    * Separate some GUI elements into separate files to ease development - svn [443], [457], [465]
    * EXPERIMENTAL Unified Import GUI begun (for testing/feedback only) - svn [458], [466], [468], [469], [470], [471], [476], [481], [489]
    - disabled by default
    - enabled on startup with --testimport
    - file import functional
    - device import NOT functional 

- pytrainer changes for 1.7.0:

Updated Spanish translation (svn rev 420,423,424)
Updated French translation (svn rev 421)
Migration to lxml for better performance (svn rev 412,413,414)
Start of rework for Google Map rendering - experimental!, test with --gmaps3 at startup (svn 411,415)
Modified on_sportlist_changed event to improve performance (svn rev 409)
Fix for minor bug in translation scripts (svn rev 402)
Fix for bug #2811470 - clickable link for further details on MET (links to wikipedia) (svn rev 391)
Fix for bug #2089342 auto refresh after import, edit and delete of records (svn rev 390,425)
Refactoring database and config file sanity checks (triggered with --check at startup) (svn rev 389,392,396,401)
Added weekly view (svn rev 388,393,394,395,398,403-410,426)
Fix for multiple graphs view (svn rev 386,387)
Better error handling preventing pytrainer to crash (svn rev 364,369)
Support for plugin validation (triggered with --valid at startup)(svn rev 361,363,371)
Import TCXv2 files (svn rev 351,355,356)
Improving import from TCXv1 format (svn rev 354,371,375,376)
Several improvements in plugins handling (svn rev 350,353,360,378,422)
Import GPX files (svn rev 349)

- pytrainer tasks for 1.6.0.9:

Added dynamic loading and unloading of plugin menu items (svn rev 344)
Removal of decommissioned plugin (garmin301) and addition of new ones (garmingpx). Update of project data (version and url) (svn rev 343)
Adding calories support suggested by JB (svn rev 342)
Maximum is misspelled Maximun, see http://bugs.debian.org/537723 (svn 341)
Fixed some hardcoded stuff that prevents pytrainer to copy entries to ~/.pytrainer/gpx (thanks to JB) (svn 340)
Major improvements in graphs (thanks to Fiz) (svn revs 339, 336, 332, 331)
Updated german translation - bug ID: 2811507 (thanks to Noèl) (svn revs 338, 333)
Minor project and license information updated (svn revs 337, 335, 334, 329)

- pytrainer tasks for 1.6.0.8:

Rotating log file support added (rev 322, http://sourceforge.net/tracker/?func=detail&aid=2717142&group_id=213157&atid=1024595)
Translations reviewed and added script to facilitate them (rev 319-321,323)
Several improvements to Wordpress extension (rev 315,317,326)
Changed potential problems when dealing with date objects using MySQL as DB (rev 311-314)
Removing redundant calls improving graphical performance (rev 310, linked to http://sourceforge.net/tracker/?func=detail&aid=2717135&group_id=213157&atid=1024592, not yet fully fixed)
Optimizing xml files parsing when retrieving data from them (rev 309)

- pytrainer tasks for 1.6.0.7:

Removing pytrainer gui minimal window size (svn rev 304)
Ordered shutdown of logging stuff (svn rev 303)
HR and elevation graphs included when exporting to wordpress (svn rev 302)
Removal of maps directory due to license issue: https://sourceforge.net/mailarchive/message.php?msg_name=1237752714.4330.15.camel%40thinker.domain.lan (svn rev 300) 
Removal of opensuse_mozpytrainer.sh launch script as it is included in (renamed) pytrainer.sh. Deleted README.txt file to avoid confusion (svn rev 298)
Updated INSTALL file with current package versions (svn rev 297)
Fixed Google Maps integration (svn rev 296)
Updated garmin-hr config file with correct usb port value (svn rev 294)
Fixed bug where track record was supposed to be updated in database. Type cast was missing (svn rev 293)
Bug #2100647 - Quick entry doesn't work if no gpx file - Fixed (svn rev. 287)
FR #2126411 - Package python-sqlite2 not needed anymore: http://www.python.org/doc/2.5.2/lib/module-sqlite3.html (svn rev. 286)

- pytrainer tasks for 1.6.0.6:

Close button in "About" dialog now works. Migrating from Glade to GTKBuilder
Fixed some properties in pytrainer.desktop (ID#2126616)
Added COPYING file with GPLv2 (ID#2126413)
Removal of garmin301 plugin
Fixed some issues with MySql tables creation (email from Jonas Liljenfeldt)

- pytrainer tasks for 1.6.0.5:

mozpytrainer launch script with log level support -> DONE (24.08.2008)
MET and extra weight values swapped when adding a new sport -> DONE (22.08.2008)
pytrainer crashes when adding an activity which sport is not yet in DB -> DONE (31.08.2008) 
Should be enough to check timestamps when adding new activities -> DONE (31.08.2008)
Correct initialization of pace and maxpace values -> DONE (31.08.2008)

- pytrainer tasks for 1.6.0.4:

Added support for date_time_utc field when importing new tracks via file upload
pytrainer/profile.py: fixed logging issue when removing sport from database

- pytrainer tasks for 1.6.0.3:

Complete review of migration scripts. Special attention to ~/.pytrainer/conf.xml file -> DONE (31.07.2008)
Number output always with two figures to avoid confusion -> DONE (02.08.2008)

- pytrainer tasks for 1.6.0.2:

Check paces in DB (maxspeed<->maxpace | average<->pace) -> DONE (19.07.2008)
Error when updating records because of new date_time_utc field in DB -> FIXED (20.07.2008)

- pytrainer tasks for 1.6.0.1:

Adjust migration scripts
	Sports saved in ddbb (new column in table sports) -> id_sports in table sports (nothing to do)
	Date_time saved for each record (new column in table records) -> main.addDateTimeUTC (DONE - 13.07.2008)
		ALTER TABLE records ADD date_time_utc varchar2(20);
		update records set date_time_utc="2008-07-11T10:21:31Z" where id_record='158';
		-> automate process reading gpx files at the beginning

Hardcoded sport whem importing
	record.shortFromLocal (retrieves sport from local files) -> retrieve from DB (shortFromLocalDB) DONE - 13.07.2008
	record.summaryFromGPX (retrieves what will be saved in DB) DONE (12.07.2008)

- Future releases

Loading of changed preferences seems weird
Incorrect timezone when importing tracks -> check gpx._getValues
garmintools integration (laps and calories support, real sport and complete history retrieved from gps device, overall performance improvement)
Logging improvements
XML output with cElementTree
Tracks regularization
Review visual output

Added from Pierre's email:

- Equipment management :
Ability to store a list of equipment (running shoes, ...) and associate it (or not) with records. It is to follow how many km have been done with some shoes for example.

- Graph improvement:
Many things here... Curve smoothing option. Ability to zoom in and out. Select a portion of track and extract some simple statistics information (avg speed, hr, max hr, Total Ascent, ...)

