Elite Dangerous Market Connector ("EDMC") is a third-party application for use with Elite Dangerous. Its purpose is to facilitate supplying certain game data to, and in some cases retrieving it from, a number of websites and other tools.
To do this it utilises the Journal Files written by the game when played on a PC. It also makes use of Frontier's Companion API ("Frontier's CAPI"), accessible once you've authorised this application.
See the link above for more information about what it can do for you.
------------------------------------------------------------------------------------------------------
Problems Updating from 3.4.3.0/3.43
We've been made aware of an issue with the old 3.4.3.0/3.43 version (the last one that Marginal released) when checking for an update. It finds that there's a new version, but then crashes shortly after trying to offer it to the user (the changelog pane is blank and the entire window, along with the EDMarketConnector.exe process, disappears 2-3 seconds later).
For now we're advising all 3.4.3.0 users (who want to update, if you have any third-party plugins they'll likely need updating to work with 4.x versions) to follow the procedure outlined in this EDMC wiki Troubleshooting page. You really do want to update to the 4.x series, else you're missing out on all sorts of bug fixes and enhancements.
As per #804 - Update from 3.4.3.0/3.43 doesn't work I've contacted Marginal to see if he can change the redirect of the old update URL to point to a file I can directly control (rather than to the live GitHub one, where edits will affect all EDMC users). If he enacts that change then I'll experiment to see if changing the contents of the file will allow 3.4.3.0 to update.
---------------------------------------------------------
Release 4.1.6
We might have finally found the cause of the application hangs during shutdown. Note that this became easier to track down due to the downtime for migration of www.edsm.net around 2021-01-11. Before these fixes EDSM's API not being available would cause an EDMC hang on shutdown.
This is a minor maintenance release, mostly addressing behaviour around process shutdown and startup, along with a couple of small enhancements that most users won't notice.
The only change from 4.1.3 is to insert some Windows version checks before even attempting to set a UTF-8 encoding. We'll now only attempt this if the user is not on Windows, or is on at least Windows 10 1903.
For unknown reasons no exception was being thrown under some circumstances (in this case running under an earlier Windows 10, but with EDMarketConnector.exe set to run in Windows 7 compatibility mode for some unknown reason).
Release 4.1.3
Release 4.1.2
This release should get the program running again for everyone who had issues with 4.1.0.
Release 4.1.0
This release contains the result of a lot of code cleanup on several files and the addition of a proper logging paradigm, which should aid us in tracking down bugs.
None of the code cleanups should change actual program behaviour, but as we don't yet have the code in a state to have proper tests it's possible we've broken something.
There was a series of betas and release candidates between 4.0.6 and 4.1.0, see their individual changelogs on GitHub EDMarketConnector Releases. All the pertinent changes in them were folded into the text above.
To do this it utilises the Journal Files written by the game when played on a PC. It also makes use of Frontier's Companion API ("Frontier's CAPI"), accessible once you've authorised this application.
See the link above for more information about what it can do for you.
------------------------------------------------------------------------------------------------------
Problems Updating from 3.4.3.0/3.43
We've been made aware of an issue with the old 3.4.3.0/3.43 version (the last one that Marginal released) when checking for an update. It finds that there's a new version, but then crashes shortly after trying to offer it to the user (the changelog pane is blank and the entire window, along with the EDMarketConnector.exe process, disappears 2-3 seconds later).
For now we're advising all 3.4.3.0 users (who want to update, if you have any third-party plugins they'll likely need updating to work with 4.x versions) to follow the procedure outlined in this EDMC wiki Troubleshooting page. You really do want to update to the 4.x series, else you're missing out on all sorts of bug fixes and enhancements.
As per #804 - Update from 3.4.3.0/3.43 doesn't work I've contacted Marginal to see if he can change the redirect of the old update URL to point to a file I can directly control (rather than to the live GitHub one, where edits will affect all EDMC users). If he enacts that change then I'll experiment to see if changing the contents of the file will allow 3.4.3.0 to update.
---------------------------------------------------------
Release 4.1.6
We might have finally found the cause of the application hangs during shutdown. Note that this became easier to track down due to the downtime for migration of www.edsm.net around 2021-01-11. Before these fixes EDSM's API not being available would cause an EDMC hang on shutdown.
- We've applied extra paranoia to some of the application shutdown code to ensure we're not still trying to handle journal events during this sequence.
We also re-ordered the shutdown sequence, which might help avoid the shutdown hang.
If you encounter a shutdown hang then please add a comment and log files to Application can leave a zombie process on shutdown #678 to help us track down the cause and fix it. - We now avoid making Tk event_generate() calls whilst the appliction is shutting down.
- Plugins should actively avoid making any sort of Tk event_generate() call during application shutdown.
This means using if not config.shutting_down: to gate any code in worker threads that might attempt this. Also, be sure you're not attempting such in your plugin_stop() function.
See plugins/edsm.py and plugins/inara.py for example of the usage. - Any use of plug.show_error() won't actually change the UI status line during shutdown, but the text you tried to show will be logged instead.
- Cargo tracking will now correctly count all instances of the same type of cargo for different missions. Previously it only counted the cargo for the last mission requiring that cargo type, as found in Cargo.json.
- The loaded contents of Cargo.json can now be found in monitor.state['CargoJSON']. monitor.state is what is passed to plugins as state in the journal_entry() call.
- Our logging code should now cope with logging from a property.
- Logging from any name-mangled method should now work properly.
- Miscellaneous updates to PLUGINS.md - mostly to clarify some things.
This is a minor maintenance release, mostly addressing behaviour around process shutdown and startup, along with a couple of small enhancements that most users won't notice.
- If there is already an EDMarketConnector.exe process running when trying to run another instance then that new process will no longer exit silently. Instead you'll get a pop-up telling you it's detected another process, and you need to close that pop-up in order for this additional process to then exit.
This hopefully makes it obvious when you've got a hung EDMarketConnect.exe process that you need to kill in order to re-run the program. - In order to gather more information about how and why EDMarketConnector.exe sometimes doesn't shutdown properly we've added some extra debug logging to the sequence of clean-up calls performed during shutdown.
Also, to make it more obvious if the process has hung during shutdown the UI window is no longer hidden at the start of this shutdown sequence. It will instead linger, with "Shutting down..." showing in the status line (translation for this small phrase will be added in a later release).
If you encounter this shutdown hang then please add a comment to Application can leave a zombie process on shutdown #678 to help us track down the cause and fix it. - Cater for 'mangled name' class functions in our logging code. e.g. where you name a class member with a __ prefix in order to 'hide' it from out-of-class code.
- To help track down the cause of Crashing On Startup #798 we've added some exception catching in our logging code. If this is triggered you will see ??:?? in logging output, instead of class and/or function names.
If you encounter this then please comment on that bug report to aid us in tracking down the root cause! - Fixed logging from EDMC.exe so that the -debug log goes into EDMC-debug.log not EDMarketConnector-debug.log.
- Fix EDMC.exe -j handling of file encodings. NB: This command-line argument isn't listed on EDMC.exe -h as it's intended for developer use only.
- Fix the name of 'Void Opal(s)' so that output of market data to files is correct.
- Fix URL in PLUGINS.md to refer to main, not master branch.
- We're able to pull py2exe from PyPi now, so docs/Releasing.md has been update to reflect this.
The only change from 4.1.3 is to insert some Windows version checks before even attempting to set a UTF-8 encoding. We'll now only attempt this if the user is not on Windows, or is on at least Windows 10 1903.
For unknown reasons no exception was being thrown under some circumstances (in this case running under an earlier Windows 10, but with EDMarketConnector.exe set to run in Windows 7 compatibility mode for some unknown reason).
Release 4.1.3
- Revert to not setting gdiScaling in the application manifest. This should fix #734 and #739.
A side effect will be that the radio buttons in Preferences > Appearance for the Theme selection will once more be improperly sized under any UI scaling. This is a Tcl/Tk bug which they have fixed in their code, but not yet made a new release containing that fix. We'll have it fixed when Tcl/Tk release a fixed version and Python releases a fixed version, that we use, that includes the fixed libraries. - Wraps some ctypes code in a try/except in order to fix #737. This should benefit anyone running EDMC under any Wine version that doesn't set the registry key we check for.
Note, however, that we recommend running EDMarketConnector natively from source if using Linux.
Release 4.1.2
- Minor fix to EDMC.py to revert broken logic trying to detect when there is neither commodities nor outfitting data for a station.
This release should get the program running again for everyone who had issues with 4.1.0.
- Catch any exception when we try to set UTF-8 encoding. We'll log where this fails but the program should continue running.
- The use of the tkinter.filedialog code is now contingent on a UTF-8 encoding being set. If it isn't then we'll revert to the previous non-tkinter file dialog code. The older OSes that can't handle a UTF-8 encoding will get that slightly worse file dialog (that was previously always the case before 4.1.0). Everyone else gets to enjoy the more up to date file dialog with all the shortcuts etc.
Release 4.1.0
This release contains the result of a lot of code cleanup on several files and the addition of a proper logging paradigm, which should aid us in tracking down bugs.
None of the code cleanups should change actual program behaviour, but as we don't yet have the code in a state to have proper tests it's possible we've broken something.
- The error 'list' object has no attribute 'values' should now be fixed.
- This version will attempt to send empty market commodity lists over EDDN. The benefit of this is it will show when a Fleet Carrier no longer has any buy or sell orders active.
At this time the EDDN Gateway will reject these messages. We're catching and suppressing that (but log a message at TRACE level). If/when the EDDN schema is updated and the Gateway starts using that this will mean, e.g. EDDB, can start better tracking Fleet Carrier markets. - We are now explicitly a Unicode application:
- A manifest setting in both EDMarketConnector.exe and EDMC.exe now specifies they're Unicode applications so that they default to using the UTF-8 codepage.
- We are now explicitly setting a UTF8 encoding at startup. NB: This is still necessary so that users running from source code are also using the UTF-8 encoding, there's no manifest in that scenario.
This shouldn't have any side effects and has allowed us to switch to the native tkinter file dialogs rather than some custom code.
- If you do encounter errors that might be related to this then it would be useful to see the logging output that details the Locale settings at various points during startup. Examples might include incorrect text being rendered for your language when you have it set, or issues with filenames and their content, but any of these are unlikely.
- EDMarketConnector.exe now has gdiScaling set to true in its manifest. This results in better Windows OS scaling of the UI (radio buttons scale correctly now). This might negate the need for our own UI Scaling (see below), but we're leaving the functionality in for anyone who finds it useful.
- New UI Scaling option! Find the setting on the 'Appearance' tab of Settings.
- This will only actually take effect after restarting the application.
- The 'Default' theme's menu names won't be resized due to using the default font. The other two themes work properly though as they use a custom font for those texts.
- As per the note next to the settings bar, "100" means "default", so set it to that if you decide you don't need the UI scaling.
- If you select 0 it will become 100 on the next startup.
- Plugin Authors: If you are doing per-pixel things in your UI then you'll want to check config.get('ui_scale') and adjust accordingly. 100 means default scaling with other values being a percentage relative to that (so 150 means you need to scale everything x1.5).
- Code dealing with Frontier's CAPI was cleaned up, so please report any issues related to that (mostly when just docked or when you press the Update button).
- We now have proper logging available, using the python module of that name. Plugin Authors, please change your code to using proper logging, as per the new 'Logging' section of PLUGINS.md, rather than simple print(...) statements.
- We have a TRACE level of log output. By default this is turned off. Run either EDMarketConnector or EDMC with --trace flag to enable. This is intended for use where we need finer-grained tracing to track down a bug, but the output would be too spammy in normal use.
To make it easy for users to run with TRACE logging there's a new file EDMarketConnector - TRACE.bat. Running this should result in the program running with tracing. Recommended use is to navigate a Windows File Explorer window to where EDMarketConnector.exe is installed then double-click this .bat file. - EDMC.py has a new --loglevel command-line argument. See EDMC.py -h for the possible values. It defaults to 'INFO', which, unless there's an error, should yield the same output as before.
- EDMC.exe will now log useful startup state information if run with the --loglevel DEBUG arguments.
- EDMarketConnector has a new 'Loglevel' setting on the 'Configuration' tab to change the loglevel. Default is 'INFO' and advised for normal use. If reporting a bug it will be very helpful to change this to 'DEBUG' and then reproduce the bug. Changes to this will take effect immediately, no need for a restart.
- Both programs not only log to their old locations (console for EDMC, and %TEMP%\EDMarketConnector.log for the main application), but now also to a size-limited and rotated logfile inside the folder %TEMP%\EDMarketConnector\.
- The base filename inside there is EDMarketConnector-debug.log for the main program and EDMC-debug.log for the command-line program.
- A new file is only started if/when it reaches the 1 MiB size limit.
- We'll keep at most 10 backups of each file, so the maximum disk space used by this will be 22 MiB.
- Only actually logged output goes to these files, which currently is far from all the traditional output that goes to the old file/console. Anything using print(...) will not appear in these new files.
- These files always default to DEBUG level, whereas the old log file continues to follow the user-set logging level.
- Default logging level for plugins is DEBUG. This won't change what's actually logged, it just ensures that everything gets through to the two channels that then decide what is output.
- We have a TRACE level of log output. By default this is turned off. Run either EDMarketConnector or EDMC with --trace flag to enable. This is intended for use where we need finer-grained tracing to track down a bug, but the output would be too spammy in normal use.
- There's a little extra DEBUG logging at startup so we can be sure of some things like Python version used (pertinent if running from source).
- Minor tweak to EDDN plugin logging so we know what message we tried to send if it fails.
- More logging added to companion.py to aid diagnosing Frontier Auth issues.
- Extra TRACE level logging added for when we process Location, Docked, t puFSDJump and CarrierJump events for EDSM. This was added to help track down the cause of #713.
There was a series of betas and release candidates between 4.0.6 and 4.1.0, see their individual changelogs on GitHub EDMarketConnector Releases. All the pertinent changes in them were folded into the text above.
Last edited: