Skip to content

v0.4.9.0 - BETA

Pre-release
Pre-release

Choose a tag to compare

@C0rn3j C0rn3j released this 18 Sep 14:33

What's Changed

Due to large library updates, things may be broken, this is a beta release.
If you have the time, please test and report what's broken.

  • Fixed adding custom controllers when using the generic HID driver.
  • Added error messages to some assert crashes.
    Especially the one which can be triggered by creating duplicate devices through custom controllers, now the user is at least informed on how to deal with it.
  • Documented that running sc-controller on Windows is (or at least was) possible, untested.
    Also added some documentation regarding AppImages/Flatpak.
  • Stopped marking some dependencies as optional.
    While they are still optional in the code for now, they will probably be hardcode-required in a future release.
    This prevents weird bugs due to having different environments between different systems.
  • Unified spelling of LICENSE vs LICENCE and switched to the correct SPDX identifier.
  • Fixed some Evdev deprecations as .fn is now deprecated and .path needs to be used.
  • Updated the Game Controller DB to the latest upstream version with 3 years worth of fixes and additions.
  • Copypasted and hardcoded libraries were found while digging in the codebase under scc/lib.
    This means sc-controller was using these extremely dated(some 8+ years) libraries with old behavior and old bugs:
    • libusb1 - Torn out and imports replaced, libusb1 is now a new dependency.
      This or the other changes seemingly broke input methods which now provide bytearrays instead of bytes and may need to be converted where appropriate
    • enum - This is the worst one as it seems to be torn out from core Python 2(???), fixing this drastically changes how enums are handled.
      In some places, referring to the enum now gives its value instead of the expected full name.
      Tests themselves, parsers and some code had to be fixed.
      Current tests do not catch everything, so there's more work to be done
    • daemon - Tiny customized Daemon implementation, perhaps makes sense but needs to be typed at minimum in the future.
    • eudevmonitor - Custom udev monitor implementation.
      Might make sense to migrate to https://github.com/pyudev/pyudev or https://pypi.org/project/udev-monitor/
    • ioctl_opt - Updated to the latest 1.3 - will be torn out in the future and made into a proper dependency.
    • jsonencoder - Seems to be an override of Python json, as if having a custom JSON parser elsewhere wasn't enough.
      It probably shouldn't be done in this fashion, needs further poking
    • hidraw - Seems like sc-controller added two helper function to it which make it harder to remove the bundling, being resolved here vpelletier/python-hidraw#4
    • hidparse - Looks like a custom implementation, might make sense to migrate it to https://github.com/usb-tools/python-hid-parser
    • hidparse_data - Enums separated from the above hidparse implementation
    • xinput - Custom xinput library, there are probably better solutions, did not check
    • xwrappers - Custom X library, same as above
  • We now properly target Python 3.8+ with Ruff lint rules
    • Various files have been semi-formatted by them, and types have started being added for easier debugging

Full Changelog: v0.4.8.21...v0.4.9.0