1
0
mirror of https://github.com/EDCD/EDMarketConnector.git synced 2025-06-03 00:51:11 +03:00

ChangeLog: Merged all 5.0.0-beta entries for a -rc1 version

This commit is contained in:
Athanasius 2021-05-07 19:58:32 +01:00
parent bbd1d7a52b
commit 3e65fbaa5b

View File

@ -1,350 +1,166 @@
This is the master changelog for Elite Dangerous Market Connector. Entries are in reverse chronological order (latest first).
---
**As of release 5.0.0 (including betas) we no longer support Windows 7.
This is due to moving to Python 3.9.x, which itself does not now support
Windows 7. The application (both EDMarketConnector.exe and EDMC.exe) will
crash on startup due to a missing DLL.**
Pre-Release 5.0.0-beta8
Pre-Release 5.0.0-rc1
===
Python 3.9
---
* We now test against, and package with, Python 3.9.5.
**As a consequence of this we no longer support Windows 7.
This is due to Python 3.9.x itself not supporting Windows 7. The
application (both EDMarketConnector.exe and EDMC.exe) will crash on startup
due to a missing DLL.**
This should have no other impact on users or plugin developers, other
than the latter now being free to use features that were introduced since the
Python 3.7 series.
Developers can check the contents of the `.python-version` file
in the source (it's not distributed with the Windows installer) for the
currently used version in a given branch.
Changes and Enhancements
---
* If the application detects it's running against a non-live (alpha or beta)
version of the game it will append " (beta)" to the Commander name on the
main UI.
* Don't assume some Journal events always have a 'Cost' value.
* Removed a stray piece of code relating to the aborted systray
implementation. This would have caused minimising of the application to
hide the window. Only triggered if you'd tried our `develop` branch
whilst the systray code was active, and left the option "Minimize to systray"
active.
Plugin Developers
---
* `monitor.state['OnFoot']` is now set True for a `DropshipDeploy` event.
* Better detect that we're back on-foot from `Disembark` on a station.
* Better `Docked` event processing to cater for the more limited form of this
event in an Apex taxi.
Pre-Release 5.0.0-beta7
===
* More work has been done for Odyssey, with extra and expanded Journal
events now available. Suits and their Loadouts will track better now,
although we still require a CAPI data pull (an 'Update') to be guaranteed
data about them.
Plugin Developers
---
* The `state` passed to plugins has for a long time had a `'Credits'` member,
but until now no effort was made to keep this record of the credits balance
up to date after the initial `LoadGame` event. This has now been addressed,
and the balance should stay in sync as best it can from the available
Journal events. It will always correct back to the actual balance on each
CAPI data pull.
* `Suits` and `SuitLoadouts` in `state` will now always be a `dict`, even if
the array is not sparse, and will never be `None`. This allows for
consistency in how you access the members. Note that the `id` field found
on e.g. weapon details in suit loadouts may be `None` if we got the data
from the Journal rather than the CAPI data.
* `BackPack` items will now track better. However note that the lack of a
Journal event when throwing a grenade, along with no `BackPackMaterials`
event if logging in on-foot means that we can't track this inventory
perfectly.
* Ship `Cargo` in `state` now takes account of any `CargoTransfer` events.
This was added to the game in the Fleet Carriers update, but also covers
transfers to/from an SRV.
Pre-Release 5.0.0-beta6
===
This adds a new UI element 'Suit', below 'Ship' when applicable that
details the type of suit you currently have equipped and its Loadout name.
This UI element is collapsed/hidden if no suit/on-foot state is detected,
i.e. not playing Odyssey (Alpha or otherwise).
* Updated translations. Once more, thanks to all the translators!
* There is a new CL arg for EDMarketConnector.exe `--force-edmc-protocol`, but
this is really only of use to core developers (its purpose being to force
use of the edmc:// protocol for Frontier Auth callbacks, even when not
* We now sanity check a returned Frontier Authentication token to be sure
it's for the current Commander. If it's not you'll see
`Error: customer_id doesn't match!` on the bottom status line. Double-check
you're using the correct credentials when authing!
* New 'Main window transparency' slider on `Settings` > `Appearance`.
* New command-line argument for EDMarketConnector.exe `--reset-ui`. This will:
1. Reset to the default Theme.
2. Reset the UI transparency to fully opaque.
The intention is this can be used if you've lost sight of the main window
due to tweaking these options.
* New CL arg for EDMarketConnector.exe `--force-edmc-protocol`.
This is really only of use to core developers (its purpose being to force
use of the edmc:// protocol for Frontier Auth callbacks, even when not
'frozen').
* Slightly improve checking of old ship loadout files before writing a new one.
* Linux config will be flushed to disk after any change. This means that
EDMC.py can now actually make use of the latest CAPI auth if it's been
* Linux config will be flushed to disk after any change. This means that
EDMC.py can now actually make use of the latest CAPI auth if it's been
updated by EDMarketConnector.py since that started.
Plugin Developers
---
If you want to run multiple instances of the application under Linux then
please check the updated [Troubleshooting: Multi-Accounting](https://github.com/EDCD/EDMarketConnector/wiki/Troubleshooting#multi-accounting)
wiki page.
We now have support for Odyssey Suits and their Loadouts. See PLUGINS.md
for details, particuarly the way in which `state[Suits]` might be either a
`list` or a `dict` and how to deal with that.
NB: This data is only guaranteed up to date and correct after a fresh CAPI
data pull, as the current Journal events don't allow for updating it on the
fly (this should change in a future Odyssey patch).
Pre-Release 5.0.0-beta5
===
* Ship Type/Name will now be greyed out, and not clickable, if we don't
currently have loadout information for it. This prevents trying to send an
empty loadout to your shipyard provider.
* Sanity check a returned Frontier Authentication token to be sure it's for
the current Commander. If it's not you'll see `Error: customer_id doesn't
match!` on the bottom status line. Double-check you're using the correct
credentials when authing!
* Bug fixed when handling CAPI-sourced shipyard information. This would
currently only have shown up on live for Fleet Carriers due to a Frontier
bug with not returning shipyard data at all for normal stations.
It has been observed that Frontier has fixed this bug for Odyssey.
* Don't try to get Ship information from `LoadGame` event if directly in CQC.
* A lot of general code cleanup relating to: Inara, outfitting, Frontier
CAPI, hotkey (manual Updates), dashboard (Status.json monitoring),
commodities files, ED format ship loadout files.
* Inara: Don't attempt to send an empty
`setCommanderReputationMajorFaction` API call. This quietens an error
from the Inara API caused when a Cmdr literally has no Major Faction
Reputation yet.
Plugin Developers
---
* Initial support for new Odyssey "MicroResources" (Data, Item, Component
and Consumable) in the "Ship Locker" and "BackPack". NB: Currently the
`ShipLockerMaterials` event omits a `Data` array, so we can't properly
track those.
See the updated PLUGINS.md for details about this in the `state` dictionary.
Pre-Release 5.0.0-beta4
===
* Now using Python 3.9.4.
* Some initial support for things new in Odyssey has been added. We can
detect when you're on-foot and at a station, so as to leverage Frontier
CAPI to send data about the station to EDDN etc.
**NB: Due to shortcomings in Journal support we can only detect your
'station' location on orbital stations, and only when you first login
there, not for subsequent Disembarking at one, and not at all for surface
ports, let alone surface settlements.**
More support, for things like the 'ShipLocker' inventory of all the new
materials, will be added in a subsequent beta.
* A little TRACE logging output has been commented out for now.
Plugin Developers
---
* All static data that is cleared for use by plugins is now in the file
`edmc_data.py` and should be imported from there, not *any* other module.
The one thing we didn't move was the 'bracket map' dictionaries in td.py
as they're for use only by the code in that file.
All future such data will be added to this file, and we'll endeavour not
to make breaking changes to any of it without increasing our Major version.
* We now change the current working directory of EDMarketConnector.exe to
its location as soon as possible in its execution. We're also now more
paranoid about ensuring we reference the full path to the `.gitversion` file.
However, no plugin should itself call `os.chdir(...)` or equivalent. You'll
change the current working directory for all core code and other plugins as
well (it's global to the whole **process**, not per-thread). Use full
absolute paths instead (`pathlib` is what to use for this)
Pre-Release 5.0.0-beta3
===
This pre-release allows for using the application with the Odyssey Phase 1
Alpha without constant complaints of 'Error: Frontier server is lagging'.
Work is on-going for supporting any new items and features in the Alpha,
but this application should now be usable with it. Please
[report](https://github.com/EDCD/EDMarketConnector/issues/new?assignees=&labels=bug%2C+unconfirmed&template=bug_report.md&title=)
any EDMC errors you experience!
* Add support for detecting if a player is on-foot. This is then used to
prevent false 'Frontier server lagging' messages.
Note that currently your on-foot location can only be detected when you
login, and not when you disembark from an Apex shuttle anywhere.
* Linux and macOS: You can now set a font name and size in your config file.
Ensuring this is a TTF font, rather than a bitmap font, should allow the
Ensuring this is a TTF font, rather than a bitmap font, should allow the
application UI scaling to work.
1. 'font' - the font name to attempt using
2. 'font_size' - the font size to attempt using.
1. 'font' - the font name to attempt using
2. 'font_size' - the font size to attempt using.
There is no UI for this in Preferences, you will need to edit your
[config file](https://github.com/EDCD/EDMarketConnector/wiki/Troubleshooting#location-of-configuration-files)
to set or change it, and then restart the application.
This is not supported on Windows so as not to risk weird bugs. UI
This is not supported on Windows so as not to risk weird bugs. UI
Scaling works on Windows without this.
* Code to do with processing Journal events was reworked and noisy logging
reduced as a consequence.
Plugin Authors
---
* The new materials added in Odyssey (for things like Suit and on-foot
Weapon upgrades) are now tracked in the `state['Component']` dictionary.
NB: Only from the `MissionCompleted` event at this point, support still
needs adding for the `ShipLockerMaterials` event to synchronise totals at
login.
* `companion.ship_map` was moved to `util_ships.ship_map` so as to avoid an
import loop from some other changes.
Pre-Release 5.0.0-beta2
===
* Support the 'JournalAlpha' files from the Odyssey Alpha. We've confirmed
any data from these is correctly tagged as 'beta' for the is_beta flag
passed to plugins.
Any data from Odyssey Alpha is sent to EDDN using the test schemas.
No data from Odyssey Alpha is sent to the EDSM or Inara APIs.
* Fix ship loadout export to files to not trip up in the face of file encoding
issues. This relates to the 'Ship Loadout' option on the 'Output' tab of
Settings/Preferences.
Plugin Authors
---
* `config.appversion()` now returns a `semantic_version.Version`. In contexts
where you're expecting a string this should mostly just work. If needs
be wrap it in a `str()`.
* Example plugin
[plugintest](https://github.com/EDCD/EDMarketConnector/tree/main/docs/examples/plugintest)
updated. This includes an example of how to check core EDMC version if needs
be. This example is also in
[PLUGINS.md](https://github.com/EDCD/EDMarketConnector/blob/main/PLUGINS.md#checking-core-edmc-version).
Pre-Release 5.0.0-beta1
===
This release comes after some substantial code cleanup and is our first based
on Python 3.9 rather than 3.7. Other than what is noted in this changelog
it should have the same functionality as 4.2.4.
* We are now testing and building with Python 3.9 (3.9.2 specifically at
this point). This should have no impact on users or plugin developers, other
than the latter now being free to use features that were introduced since the
Python 3.7 series.
For developers you can check the contents of the `.python-version` file
in the source (it's not distributed with the Windows installer) for the
currently used version in a given branch.
* We now also cite the git 'short hash' in the version string. For a Windows
install of the application this is sourced from the `.gitversion` file
* We now also cite the git 'short hash' in the version string. For a Windows
install of the application this is sourced from the `.gitversion` file
(written during the build process).
When running from source we attempt to use the command `git rev-parse --short HEAD`
to obtain this. If this doesn't work it will be set to 'UNKNOWN'.
* New 'Main window transparency' slider on `Settings` > `Appearance`.
* New command-line argument for EDMarketConnector.exe `--reset-ui`. This will:
1. Reset to the default Theme.
2. Reset the UI transparency to fully opaque.
The intention is this can be used if you've lost sight of the main window
due to tweaking these options.
* We have added a 'killswitch' feature to turn off specific functionality if it
is found to have a bug. An example use of this would be in an "oh
shit! we're sending bad data to EDDN!" moment so as to protect EDDN
is found to have a bug. An example use of this would be in an "oh
shit! we're sending bad data to EDDN!" moment so as to protect EDDN
listeners such as EDDB.
If we ever have to use this we'll announce it clearly and endeavour to
get a fixed version of the program released ASAP. We will **NOT** be
If we ever have to use this we'll announce it clearly and endeavour to
get a fixed version of the program released ASAP. We will **NOT** be
using this merely to try and get some laggards to upgrade.
* Our logging code will make best efforts to still show class name and
other such fields if it has trouble finding any of the required data for
the calling frame. This means no longer seeing `??:??:??` when there is
* Our logging code will make best efforts to still show class name and
other such fields if it has trouble finding any of the required data for
the calling frame. This means no longer seeing `??:??:??` when there is
an issue with this.
* macOS: We've managed to test the latest code on macOS Catalina. Other than
[keyboard shortcut support not working](https://github.com/EDCD/EDMarketConnector/issues/906)
it appears to be working.
* We've pulled the latest Coriolis data which might have caused changes to
* We've pulled the latest Coriolis data which might have caused changes to
ship and module names as written out to some files.
Plugin Developers
-----------------
Odyssey
---
* config.py has undergone a major rewrite. You should no longer be using
`config.get(...)` or `config.getint(...)`, which will both give a
deprecation warning.
Use instead the correct config.get_<type> function:
* `config.get_list(<key>)`
* `config.get_str(<key>)`
* `config.get_bool(<key>)`
* `config.get_int(<key>)`
Setting still uses `config.set(...)`.
This adds a new UI element 'Suit', below 'Ship' when applicable that
details the type of suit you currently have equipped and its Loadout name.
This UI element is collapsed/hidden if no suit/on-foot state is detected,
i.e. not playing Odyssey (Alpha or otherwise).
* The files `stations.p` and `systems.p` have been removed from the Windows
Installer. These were never intended for third-party use. Their core
code use was for generating EDDB-id links, but we long since changed the
EDDB plugin's handlers for that to use alternate URL formats based on
game IDs or names.
If you were using either to lookup EDDB IDs for systems and/or stations
then please see how `system_url()` and `station_url` now work in
`plugins/eddb.py`.
This change also removed the core (not plugin) `eddb.py` file which
generated these files. You can find it still in the git history if needs
be. It had gotten to the stage where generating `systems.p` took many
hours and required 64-bit Python to have any hope of working due to
memory usage.
* Support has been added for the `NavRoute` (not `Route` as v28 of the
official Journal documentation erroneously labels it) Journal event and
its associated file `NavRoute.json`. See [PLUGINS.md:Events documentation](https://github.com/EDCD/EDMarketConnector/blob/main/PLUGINS.md#journal-entry)
* Similarly there is now support for the `ModuleInfo` event and its
associated `ModulesInfo.json` file.
* More work has been done for Odyssey, with extra and expanded Journal
events now available. Suits and their Loadouts will track better now,
although we still require a CAPI data pull (an 'Update') to be guaranteed
data about them.
* Some initial support for things new in Odyssey has been added. We can
detect when you're on-foot and at a station, so as to leverage Frontier
CAPI to send data about the station to EDDN etc.
**NB: Due to shortcomings in Journal support we can only detect your
'station' location on orbital stations, and only when you first login
there, not for subsequent Disembarking at one, and not at all for surface
ports, let alone surface settlements.**
More support, for things like the 'ShipLocker' inventory of all the new
materials, will be added in a subsequent beta.
* Add support for detecting if a player is on-foot. This is then used to
prevent false 'Frontier server lagging' messages.
Note that currently your on-foot location can only be detected when you
login, and not when you disembark from an Apex shuttle anywhere.
Bug Fixes
---
* Fix ship loadout export to files to not trip up in the face of file encoding
issues. This relates to the 'Ship Loadout' option on the 'Output' tab of
Settings/Preferences.
* Ship Type/Name will now be greyed out, and not clickable, if we don't
currently have loadout information for it. This prevents trying to send an
empty loadout to your shipyard provider.
* Bug fixed when handling CAPI-sourced shipyard information. This happens
due to a Frontier bug with not returning shipyard data at all for normal
stations.
It has been observed that Frontier has fixed this bug for Odyssey.
* Don't try to get Ship information from `LoadGame` event if directly in CQC.
* Inara: Don't attempt to send an empty
`setCommanderReputationMajorFaction` API call. This quietens an error
from the Inara API caused when a Cmdr literally has no Major Faction
Reputation yet.
Code Clean Up
-------------
* Some code to do with processing Journal events has been re-factored.
* Code pertaining to processing Journal events was reworked and noisy logging
reduced as a consequence.
* A little TRACE logging output has been commented out for now.
* The code for `File` > `Status` has been cleaned up.
@ -353,6 +169,128 @@ Code Clean Up
* Code handling the Frontier Authorisation callback on Windows has been
cleaned up.
* A lot of general code cleanup relating to: Inara, outfitting, Frontier
CAPI, hotkey (manual Updates), dashboard (Status.json monitoring),
commodities files, and ED format ship loadout files.
Plugin Developers
---
* The files `stations.p` and `systems.p` have been removed from the Windows
Installer. These were never intended for third-party use. Their core
code use was for generating EDDB-id URLs, but we long since changed the
EDDB plugin's handlers for that to use alternate URL formats based on
game IDs or names.
If you were using either to lookup EDDB IDs for systems and/or stations
then please see how `system_url()` and `station_url` now work in
`plugins/eddb.py`.
This change also removed the core (not plugin) `eddb.py` file which
generated these files. You can find it still in the git history if needs
be. It had gotten to the stage where generating `systems.p` took many
hours and required 64-bit Python to have any hope of working due to
memory usage.
* All static data that is cleared for use by plugins is now in the file
`edmc_data.py` and should be imported from there, not *any* other module.
The one thing we didn't move was the 'bracket map' dictionaries in `td.py`
as they're for use only by the code in that file.
All future such data will be added to this file, and we'll endeavour not
to make breaking changes to any of it without increasing our Major version.
* `config.appversion()` is now a function that returns a `semantic_version.Version`.
In contexts where you're expecting a string this should mostly
just work. If needs be wrap it in `str()`.
* Example plugin
[plugintest](https://github.com/EDCD/EDMarketConnector/tree/main/docs/examples/plugintest)
updated. This includes an example of how to check core EDMC version if needs
be. This example is also in
[PLUGINS.md](https://github.com/EDCD/EDMarketConnector/blob/main/PLUGINS.md#checking-core-edmc-version).
* `config.py` has undergone a major rewrite. You should no longer be using
`config.get(...)` or `config.getint(...)`, which will both give a
deprecation warning.
Use instead the correct `config.get_<type>()` function:
* `config.get_list(<key>)`
* `config.get_str(<key>)`
* `config.get_bool(<key>)`
* `config.get_int(<key>)`
Setting still uses `config.set(...)`.
* We now change the current working directory of EDMarketConnector.exe to
its location as soon as possible in its execution. We're also
paranoid about ensuring we reference the full path to the `.gitversion` file.
However, no plugin should itself call `os.chdir(...)` or equivalent. You'll
change the current working directory for all core code and other plugins as
well (it's global to the whole **process**, not per-thread). Use full
absolute paths instead (`pathlib` is what to use for this)
* The `state` passed to plugins in `journal_entry()` calls (which is
actually `monitor.state` in the core code) has received many additions
relating to Odyssey, as well as other fixes and enhancements.
1. Support has been added for the `NavRoute` (not `Route` as v28 of the
official Journal documentation erroneously labels it) Journal event and
its associated file `NavRoute.json`. See [PLUGINS.md:Events documentation](https://github.com/EDCD/EDMarketConnector/blob/main/PLUGINS.md#journal-entry)
1. Similarly, there is now support for the `ModuleInfo` event and its
associated `ModulesInfo.json` file.
1. `state['Credits']` - until now no effort was made to keep this
record of the credits balance up to date after the initial `LoadGame`
event. This has now been addressed, and the balance should stay in sync
as best it can from the available Journal events. It will always correct
back to the actual balance on each CAPI data pull or game relog/restart.
1. `state['Cargo']` now takes account of any `CargoTransfer` events.
This was added to the game in the Fleet Carriers update, but also covers
transfers to/from an SRV.
1. `state['OnFoot']` is a new boolean, set true whenever we detect
the Cmdr is on-foot, i.e. not in any type of vehicle (Cmdr's own ship,
multi-crew in another Cmdr's ship, Apex taxi, or a Dropship).
1. `state['Suits']` and `state['SuitLoadouts']` added as `dict`s containing
information about the Cmdr's owned Suits and the Loadouts the Cmdr has
defined to utilise them (and on-foot weapons).
Note that in the raw CAPI data these are arrays if all members
contiguously exist, else a dictionary, but we have chosen to always coerce
these to a python `dict` for simplicity. They will be empty `dict`s, not
`None` if there is no data.
The `id` field found on e.g. weapon details in suit loadouts may be `None`
if we got the data from the Journal rather than the CAPI data.
NB: This data is only guaranteed up to date and correct after a fresh CAPI
data pull, as the current Journal events don't allow for updating it on the
fly (this should change in a future Odyssey patch).
1. `state['SuitCurrent']` and `state['SuitLoadoutCurrent']` contain the
obvious "currently in use" data as per the Suits/SuitLoadouts.
1. Tracking of the new Odyssey 'Microresources' has been added:
1. `Component` - `dict` for 'Ship Locker' inventory.
1. `Item` - `dict` for 'Ship Locker' inventory.
1. `Consumable` - `dict` for 'Ship Locker' inventory.
1. `Data` - `dict` for 'Ship Locker' inventory.
1. `BackPack` - on-foot inventory, a `dict` containing again
dicts for `Component`, `Item`, `Consumable` and `Data`.
However note that the lack of a Journal event when throwing a grenade,
along with no `BackPackMaterials` event if logging in on-foot means that
we can't track the BackPack inventory perfectly.
See the updated `PLUGINS.md` file for details.
* Note that during the Odyssey Alpha it was observed that the CAPI `data['commander']['docked']`
boolean was **always true** if the Cmdr was in their ship. This is a
regression from pre-Odyssey behaviour. The core EDMC code copes with
this.
Release 4.2.7
===