Overview of Changes from GIMP 2.99.14 to GIMP 2.99.16
=====================================================
Core:
- "Anchor" tooltip changing depending on whether we are floating over a layer
or layer mask.
- GIMP_TIMER_START|END are no-op on release builds.
- Ctrl-F overridden in our item dockables to trigger our item search popover
(multi-item selection, ability to use regexp or glob search by enabling these
in Preferences, etc.) rather than the default GTK selection popup for tree
views.
- All code is now multi-item aware (even though it might mean specifically
forbidding using some features on multiple items).
- Better support of non-ASCII characters in paths on Windows and other fixes
for Windows: API un-deprecation, unicode variants of functions…
- Copy|Cut-Paste code reworked further.
- Action "Crop to Selection" renamed to "Resize Layers to Selection".
- Action "Crop to Content" renamed to "Crop Layers to Content".
- If any opened image (with a display) is dirty, then GIMP will now inhibit the
log-out event on OSes which support it.
- Port from GtkAction/GtkUIManager to GAction/GMenu finished.
- The action search now shows the top menu path for actions when available.
- Actions can now be attributed multiple shortcuts. The duplicate actions
ending in `-accel` were removed in favor of multiple shortcuts and a few
secondary (semantic) shortcuts were added such as `Copy`/`Cut`/`Paste`
buttons for relevant actions, or `ZoomIn`/`ZoomOut` for canvas zoom,
`Forward`/`Back` to navigate through image tabs, but also some numpad
shortcuts like the `/` divide from the numpad for the action search
(additionally to the base keyboard `/` key).
It is not possible to attribute several shortcuts from GUI yet.
- An action is automatically generated for all GEGL operations which would
normally appear in the GEGL Operation tool. This includes in particular
third-party GEGL operations which might be user-installed. It makes these
filters also searchable in the action search, usable in menus and shortcuts
can be assigned as well.
- If present, the GEGL key "gimp:menu-label" will be used to set the short
label of the generated action (short labels are typically used in menus since
the menu path can serve as context). Otherwise the "title" with appended
"..." is used.
- GimpAction now have a concept of short vs. long labels, which can be used in
different places. In particular, in action search, we usually want the long
label, whereas in menus, we usually want the short label as we have context
(though the latter can be tweaked by a custom "label-variant" attribute in
.ui files).
- New "Middle Gray (CIELAB)" fill option (new image or new layer).
- Stroke Selection: "Line" and "Paint tool" styles are now in a stack
switcher instead of radio buttons. More advanced options are not "hidden"
anymore in a foldable widget.
- New grayscale color picking mode.
- .aco palettes are now imported with babl. As a result, it is now possible to
import CIE Lab palettes (colorspace 7)
- Action search now displays a "help" icon which can be clicked to show the
currently selected action's manual page (or the action search manual page if
no actions are selected). Alternatively the F1 shortcut will do the same.
- Basic matrix operations code was optimized.
- Fill/Stroke Path/Selection split the "Solid color" option into a "Foreground
color" and "Background color".
- Standardize to "X-bit" wording (e.g. "32-bit floating point" rather "32 bit
floating point").
Tools:
- GEGL Operation: auto-activate when enabled.
- Transform tools and GEGL operation don't auto-activate when opening a new
image or changing the active image.
- Align tool: "use extents of layer contents" also applies to the alignment
reference (not only the target objects).
- Color picker: pick in the image's RGB space.
- Text tool: new tool option "Show on-canvas editor" to toggle the visibility
of the on-canvas dialog.
- Unified Transform tool: the transform matrix is now selectable in the
on-canvas dialog (for instance to be easily re-usable in other software).
Graphical User Interface:
- Default, Compact and Gray themes now display a three-dot handle to paned
separators to improve accessibility and discoverability of the drag ability.
- The paned separator width is also increased a bit for accessibility (though
the Compact theme keeps a smaller separator width).
- Consistently use "Soft-proofing" wording instead of "Softproofing" or "Soft
proofing"
- The "GEGL Operation…" item was moved out of the "Filters > Generic" menu and
into the "Tools" menu.
- If present, the GEGL key "gimp:menu-path" will now be used by GIMP to create
a menu item for an operation in a given menu path.
- Default theme is less dark and the previous Default theme is renamed
"Darker".
- "Default" theme does not use smaller font size (than system theme) anymore;
but the "Compact" theme now does.
- New option "Merge menu and title bar" in Preferences > Image Windows: this
is basically an option to switch to Client Side Decoration for the image
windows (menu will be inside the title bar). It is OFF by default.
Actions:
- "tools-rotate-arbitrary" and "tools-rotate-image-arbitrary" are now disabled
when no image is opened.
Plug-ins:
- JPEG-XL:
* Initial support for CMYK/A JPEGXL export: Key and Alpha data is saved in
extra channels, and the simulation profile is saved as well.
Per the specification developers, the format does not support 'naive' CMYK
conversion, so a profile is required for export. The option will be
disabled if not set.
* Support libjxl 0.9: some API were removed which would have broken
the plug-in build. Now it should work both with old and new
version.
- Script-fu:
* Byte support: add a new type 'byte' to be able to handle binary data while
still retaining the utf8 char and string behavior.
* Enum values are now generated from GIR.
- Script-fu console: command history now persists across GIMP sessions.
- PSD:
* PSD clipping paths: import and export support.
* Unsupported features are now listed in a dialog on import.
* Add compatibility notice on export: some people have noted that legacy
layer modes have better compatibility when exporting PSDs and reopening
them in Photoshop.
* New "file-psd-load-metadata" procedure to be used by other plug-ins in
order to load Photoshop-format metadata. Some formats in particular allow
PSD style metadata (e.g. see TIFF and JPEG).
- TIFF:
* PSD metadata (both in image or layer level) can now be loaded by calling
the new "file-psd-load-metadata" PDB procedure.
* IBM PC Formatted TIFF layers are now supported on import.
- JPEG:
* PSD metadata (image level only, e.g. paths) can now be loaded by calling
the new "file-psd-load-metadata" PDB procedure.
* Clipping path import added.
* Option "4:2:2 horizontal (chroma halved)" renamed to "4:2:2 (chroma halved
horizontally)" and "4:2:2 vertical (chroma halved)" renamed to "4:4:0
(chroma halved vertically)". Research indicates it to be the most usual
notation for these options.
- DDS:
* OpenMP support enabled when available on the build machine.
- All Python 3 plug-ins whose Python 2 variants used to have a GUI now also
have one.
- Script "Predator" removed.
- PAM: import and export (formats: RAYSCALE, GRAYSCALE_ALPHA, RGB, RGB_ALPHA)
support added. PAM files are essentially PPM files with a different header
format and alpha/16 bit support.
- GIF:
* Load error message handling improved.
* Keep GIF's full palette on import (sometimes needed for consistency when
used in a specific pipeline, e.g. a videogame engine with fixed palette).
- PCX:
* new radio option "override-palette" to override PCX 1 bit palette.
* 8bpp with 4 planes in PCX/DC import support added (we were only supporting
3 planes).
- QOI: new format support (import and export).
- Amiga IFF/ILBM: initial support for importing indexed ILBM, Amiga PBM, and
ACBM images.
- DCX: new import support (DCX files are containers that store up to 1023 PCX
files).
- Plug-ins ported to GAction: animation-play, colormap-remap, ifs-compose,
gfig, ImageMap.
- Plug-ins ported to GimpProcedureConfig and GimpProcedureDialog:
align-layers, hot, wavelet-decompose, file-sunras, file-heif, file-tga,
file-pat, file-xpm, file-csource, file-jp2-load, file-dds (import),
file-sgi, file-fli, file-pnm, file-gbr, file-psp, file-aa, bmp-save,
despeckle, blinds, contrast-retinex, jigsaw, nl-filter, destripe, file-mng,
file-html-table, file-xbm, file-pdf-load, file-gif-save, file-ps,
border-average, mail, checkerboard.
- metadata-viewer and metadata-editor: graphical interfaces are not built from
GtkBuilder .ui files anymore. These were the last instances of using this
format (except for our new menus!) for creating full GUIs as we don't want
to go this way anymore!
- FITS:
* Ported to cfitsio library for loading/exporting. This allows us to
import compressed FITS files (GZIP, HCOMP, PLIO, RICE) in 8/16/32
bit and float/double precision.
* As a result of the port, this plug-in is now optional.
- ILBM: "Hold and Modify" (HAM) mode use control bits to increase the
palette beyond what's stored in the CMAP chunk. We now check if HAM
mode is set and then interprets the plane bits accordingly.
API:
- Changes in libgimpwidgets:
* New functions:
+ gimp_int_store_new_array(): variant of gimp_int_store_new() which will
work in bindings.
+ gimp_spin_scale_get_mnemonic_keyval()
* Improved annotations or usage:
+ gimp_procedure_dialog_get_spin_scale(): factor must be 1.0 for integer
properties.
- Changes in libgimp:
* New classes:
+ GimpResource: with unique int ID, instead of data name. Actual data will
be one of the following subclasses:
+ GimpBrush
+ GimpFont
+ GimpGradient
+ GimpPalette
+ GimpPattern
* New functions:
+ gimp_procedure_dialog_fill_scrolled_window()
+ gimp_procedure_dialog_get_size_entry()
* Improved annotations or usage:
+ set_i18n() method of GimpPlugIn expects a UTF-8 catalog directory.
+ clarify gimp_image_set_file() usage (only for XCF files).
+ gimp_image_add_sample_point()
+ gimp_image_get_sample_point_position()
- Changes in libgimpbase:
* New functions:
+ gimp_bind_text_domain()
+ gimp_value_array_copy()
* Improved annotations or usage:
+ gimp_locale_directory() returns a string in the OS encoding for all but
Windows (UTF-8), i.e. GLib "filename" encoding.
+ Metadata "Exif.Image.ImageResources" and "Exif.Image.0x935c" are not
exported anymore. These are specific to Photoshop, and while we cannot
modify them, they can contain sensitive information (e.g. a thumbnail).
+ Exif.Photo.PixelXDimension and Exif.Photo.PixelYDimension metadata tags
will now be updated (if they already exist in the image) when resizing
and exporting.
- Changes in libgimpconfig:
GStrv config properties are now properly serialized and deserialized for use
as plug-ins arguments.
* New functions:
+ gimp_config_serialize_strv()
+ gimp_config_deserialize_strv()
- PDB:
* Remove GimpUint8Array in favor of GBytes.
Build:
- MacPorts support for macOS added (this is even now the official support as we
build our new packages with MacPorts).
- meson: make sure libgimp does not depend on GTK+.
- GLib requirement bumped to version 2.70 as minimum.
- Improved C99 compatibility of IPC_RMID check.
- Windows: port fileicon.ico from gimp-2-10 with additional sizes for clearer
icons on different resolutions and displays.
- Improve our build scripts to better handle sanitizer tools.
- Fix some broken unit tests in the meson build.
- Meson build options 'lua', 'javascript' and 'python' are now features, and
not boolean. I.e. use option values 'enabled'/'disabled' (defaulting to
'auto') instead of true/false.
- Meson build 'vala-plugins' option was renamed to simply 'vala'.
- Added dependency to Exiv2 0.27.4.
- JUnit reports from Meson for the CI build.
- autotools was fully dropped!
- Debian 12 bookworm is now our base platform for CI, but also for deciding
whether we can bump a dependency minimum required version or not. This is a
consequence of approaching GIMP 3.0 release so we don't want to bump minimum
versions too high.
- GEGL requirement bumped to GEGL 0.4.46.
- Windows installer's welcome image is now generated in several sizes
from our splash screen image, avoiding discrepancies as well as
unnecessarily filling our repository with a history of duplicate
images.
- Add some logic to common/ and python/ plug-ins to facilitate running
GIMP from the build directory (without being installed) while still
able to load all plug-ins.
- gtk-mac-integration was dropped as a dependency on macOS. It made problems
and is apparently less needed with GTK+3.
3.2.0 2023-05-25
[Feature]: PKey grew a new .fingerprint property which emits a fingerprint string matching the SHA256+Base64 values printed by various OpenSSH tooling (eg ssh-add -l, ssh -v). This is intended to help troubleshoot Paramiko-vs-OpenSSH behavior and will eventually replace the venerable get_fingerprint method.
[Feature]: PKey grew a new .algorithm_name property which displays the key algorithm; this is typically derived from the value of get_name. For example, ED25519 keys have a get_name of ssh-ed25519 (the SSH protocol key type field value), and now have a algorithm_name of ED25519.
[Feature]: PKey now offers convenience “meta-constructors”, static methods that simplify the process of instantiating the correct subclass for a given key input.
For example, PKey.from_path can load a file path without knowing a priori what type of key it is (thanks to some handy methods within our cryptography dependency). Going forwards, we expect this to be the primary method of loading keys by user code that runs on “human time” (i.e. where some minor efficiencies are worth the convenience).
In addition, PKey.from_type_string now exists, and is being used in some internals to load ssh-agent keys.
As part of these changes, PKey and friends grew an identifiers classmethod; this is inspired by the supported_key_format_identifiers classmethod (which now refers to the new method.) This also includes adding a .name attribute to most key classes (which will eventually replace .get_name().
[Feature]: Enhanced AgentKey with new attributes, such as:
Added a comment attribute (and constructor argument); Agent.get_keys() now uses this kwarg to store any comment field sent over by the agent. The original version of the agent feature inexplicably did not store the comment anywhere.
Agent-derived keys now attempt to instantiate a copy of the appropriate key class for access to other algorithm-specific members (eg key size). This is available as the .inner_key attribute.
Note
This functionality is now in use in Fabric’s new --list-agent-keys feature, as well as in Paramiko’s debug logging.
[Feature] Users of SSHClient can now configure the authentication logic Paramiko uses when connecting to servers; this functionality is intended for advanced users and higher-level libraries such as Fabric. See auth_strategy for details.
Fabric’s co-temporal release includes a proof-of-concept use of this feature, implementing an auth flow much closer to that of the OpenSSH client (versus Paramiko’s legacy behavior). It is strongly recommended that if this interests you, investigate replacing any direct use of SSHClient with Fabric’s Connection.
Warning
This feature is EXPERIMENTAL; please see its docs for details.
[Feature]: Implement _fields() on AgentKey so that it may be compared (via ==) with other PKey instances.
[Bug]: AgentKey had a dangling Python 3 incompatible __str__ method returning bytes. This method has been removed, allowing the superclass’ (PKey) method to run instead.
[Bug] Since its inception, Paramiko has (for reasons lost to time) implemented authentication as a side effect of handling affirmative replies to MSG_SERVICE_REQUEST protocol messages. What this means is Paramiko makes one such request before every MSG_USERAUTH_REQUEST, i.e. every auth attempt.
OpenSSH doesn’t care if clients send multiple service requests, but other server implementations are often stricter in what they accept after an initial service request (due to the RFCs not being clear). This can result in odd behavior when a user doesn’t authenticate successfully on the very first try (for example, when the right key for a target host is the third in one’s ssh-agent).
This version of Paramiko now contains an opt-in Transport subclass, ServiceRequestingTransport, which more-correctly implements service request handling in the Transport, and uses an auth-handler subclass internally which has been similarly adapted. Users wanting to try this new experimental code path may hand this class to SSHClient.connect as its transport_factory kwarg.
Warning
This feature is EXPERIMENTAL and its code may be subject to change.
In addition:
minor backwards incompatible changes exist in the new code paths, most notably the removal of the (inconsistently applied and rarely used) event arguments to the auth_xxx methods.
GSSAPI support has only been partially implemented, and is untested.
Note
Some minor backwards-compatible changes were made to the existing Transport and AuthHandler classes to facilitate the new code. For example, Transport._handler_table and AuthHandler._client_handler_table are now properties instead of raw attributes.
[Bug] The server-sig-algs and RSA-SHA2 features added around Paramiko 2.9 or so, had the annoying side effect of not working with servers that don’t support either of those feature sets, requiring use of disabled_algorithms to forcibly disable the SHA2 algorithms on Paramiko’s end.
The experimental ServiceRequestingTransport (noted in its own entry in this changelog) includes a fix for this issue, specifically by falling back to the same algorithm as the in-use pubkey if it’s in the algorithm list (leaving the “first algorithm in said list” as an absolute final fallback).
[Bug]: Fixed a very sneaky bug found at the apparently rarely-traveled intersection of RSA-SHA2 keys, certificates, SSH agents, and stricter-than-OpenSSH server targets. This manifested as yet another “well, if we turn off SHA2 at one end or another, everything works again” problem, for example with version 12 of the Teleport server endpoint.
This has been fixed; Paramiko tweaked multiple aspects of how it requests agent signatures, and the agent appears to do the right thing now.
2.0.1
- 🐛`9` Don't try loading Pytest fixture functions as if they were test
functions. Classifying this as a bug even though it's a moderately sized
change in behavior; it's vanishingly unlikely anybody was relying on this
somehow! Thanks to ``@cajopa`` for the report.
2.0.0
- 🐛`- major` Prior to version 2, we failed to correctly support true Pytest
setup/teardown methods (i.e. ``setup_method`` and ``teardown_method``) and
these would not get copied to inner class scopes. This has been fixed. We
still support old nose-style ``setup``/``teardown`` for now, despite them
going away in Pytest 8.
- :support:`-` Modernize codebase/project a bunch:
- Dropped support for Python <3.6 (including 2.7)
- Pytest support upgraded to support, **and require**, Pytest >=7.
- This plugin never worked on Pytests 5 and 6 anyways, and supporting 5-7
appears to require a lot more effort than just 7.
- Behavioral changes in Pytest internals have fixed a handful of sorta-bugs
present in pytest-relaxed under Pytest versions 3 and 4:
- The order of nested test display may change slightly, typically for the
better; eg under older versions, tests defined on a class might have been
displayed after subclasses/nested tests - now they're more likely to be
listed first, which was the original intent.
- These bugs sometimes enabled "state bleed", such as outer scopes
appearing to grant inner ones attributes set at runtime (eg by the outer
scope's ``setup``, even when the inner scope redefined ``setup``).
- If you encounter odd bugs after upgrading, please take a close look at
your code and make sure you weren't accidentally using such a
"feature". One good way to test for this is to run the "newly failing"
tests by themselves on the old dependencies -- they will likely also
fail there.
Do you ever use print() or log() to debug your code? Of course you do.
IceCream, or ic for short, makes print debugging a little sweeter.
ic() is like print(), but better:
1. It prints both expressions/variable names and their values.
2. It's 60% faster to type.
3. Data structures are pretty printed.
4. Output is syntax highlighted.
5. It optionally includes program context: filename, line number, and parent
function.
2.2.0 2023-07-12
[Feature]: Remove the somewhat inaccurate subclass requirement around Config’s .clone(into=...) constructor call. It was broken for certain use cases (such as trying to clone one subclass into a sibling subclass, which would yield a TypeError) and is irrelevant if one is using the new type annotations.
[Support] Make sure py.typed is in our packaging manifest; without it, users working from a regular installation can’t perform type checks. Thanks to Nikita Sobolev for catch & patch.
2.1.3 2023-06-14
[Bug] After the release of 2.1, package-style task modules started looking in the wrong place for project-level config files (inside one’s eg tasks/ dir, instead of next to that dir) due to a subtlety in the new import/discovery mechanism used. This has been fixed. Thanks to Arnaud V. and Hunter Kelly for the reports and to Jesse P. Johnson for initial debugging/diagnosis.
2.1.2 2023-05-15
[Support] Make sure py.typed is in our packaging manifest; without it, users working from a regular installation can’t perform type checks. Thanks to Nikita Sobolev for catch & patch.
2.1.1 2023-05-01
[Bug] Add more rigor around subprocess/runner shutdown to avoid spurious exceptions & also fix downstream issues in libraries like Fabric. Reported by Orlando Rodríguez.
[Bug] The importlib upgrade in 2.1 had a corner case bug (regarding from . import <submodule> functionality within package-like task trees) which in turn exposed a false-pass in our test suite. Both have now been fixed. Thanks to Greg Meyer and Robert J. Berger for the bug reports.
2.0.1 2023-04-29
[Bug] Add more rigor around subprocess/runner shutdown to avoid spurious exceptions & also fix downstream issues in libraries like Fabric. Reported by Orlando Rodríguez.
[Support] Tweak test suite setup methods to be named setup_method so pytest stops whining about it. Patch via Jesse P. Johnson.
2.1.0 2023-04-28
[Bug] Resolve equality comparison bug for non-collections. Patch via Jesse P. Johnson
[Support] Tweak test suite setup methods to be named setup_method so pytest stops whining about it. Patch via Jesse P. Johnson.
[Support] Implement type hints and type checking tests with mypy to reduce errors and impove code documentation. Patches by Jesse P. Johnson and review by Sam Bull.
[Support] Implement importlib and deprecate imp module. Patches provided by Jesse P. Johnson
2.0.0 2023-01-16
[Support]: Task.argspec has changed its return value; it now returns an inspect.Signature derived from that of the task’s body callable.
v8.2.0
Major Changes
-------------
chocolatey.chocolatey
- win_chocolatey - add options for specifying checksums
- win_chocolatey_facts - add filter / gather_subset option
community.vmware
- vmware_vasa - added a new module to register/unregister a VASA provider
- vmware_vasa_info - added a new module to gather the information about existing VASA provider(s)
grafana.grafana
- Addition of Grafana Server role by @gardar
- Configurable agent user groups by @NormanJS
- Grafana Plugins support on-prem Grafana installation by @ishanjainn
- Updated Service for flow mode
Changelog:
## SuperTuxKart 1.4 (31. October 2022)
### General
* Lap trial mode, by mrkubax10
* Fix parachute powerup, by heuchi
* Fix gyroscope on walldriving surface, by Benau
* Enable ARMv7 build for Windows, by Benau
* Restore macOS <= 10.14 support, by Benau
* Avoid triggering other goal lines when the goal is already scored, by kimden
### Graphics
* Items and stars animation, by Semphris
* LOD optimization, by Benau
* Implement HiDPI support in SDL2 properly, by Benau
* Beta Vulkan renderer, by Benau
* Make sky particle always fall vertically, by Benau
### Tracks and modeling
* Updated Konqi, by ZAQraven99
* New Godette kart, by ZAQraven99
* Updated Battle Island and Cave X, by Typhon306
* Fix broken invisible wall in Antediluvian Abyss, by Benau
* New textures in Shifting Sands, by KartOym
* Balanced starting positions in all official soccer fields, by Crystal
### Networking
* Add track searching to network track screen, by Benau
* Make limit of players in game configurable, by Waldlaubsaengernest
* Allow using real addon karts (same hitbox and kart type as in local game), by Benau
### User Interface
* Add left side ghost replay difficulties, by ldoyenard
## SuperTuxKart 1.3 (28. September 2021)
### Networking
* Server bookmarks, by Benau
### Graphics
* Introduce render resolution scaling for the modern renderer, by QwertyChouskie and Deve. For users with limited GPU power, this allows to get significant performance (FPS) gains at the cost of image quality. It can also allow additional graphics effects at the same performance. This is especially useful for users with high-resolution and high-DPI screens. The scaling only affects the 3D scene, the UI remains crisp at full-resolution.
* Simplification through removal of unused deprecated graphical effects, by Samuncle
* Many updates to texture-related code, by Benau
* Auto-compute Level of Detail distances for 3D models set to use LOD depending on track complexity, by Samuncle. The geometry level parameter allows partial control over the drawing distances.
* Improved screen space reflection, by QwertyChouskie
### General
* Switch port, by Mary
* Gamepad force feedback support, by Mary
* Highscore screen, by RQWorldblender
* Grand Prix highscores, by mrkubax10
* Updates to the bundled tinygettext library, by Benau
* Enable custom skidding sounds for karts, by Benau
* Greatly sped up loading of tracks with many checklines through optimization, by heuchi
* And many bugfixes and enhancements too small or specific to be detailed
### User Interface
* Display the skin-appropriate iconset without having to restart, by Benau
* Fix some issues with the options menu when used during a pause, by Benau
* Add a confirmation dialog before closing the game through the "go back" key/button, by Benau
* In the result screen, display the race position with a number with 10 karts or more, by mrkubax10
* In the result screen, display the challenge result and the requirements met or failed, by CodingJellyFish
* Many small menu and dialogs improvements, by RQWorldblender and others
* Usability and functionality improvements to the debug menu, by RQWorldblender
* Clickable URLs in text, by Benau
#### In-race UI
* Add visual and sound feedback when a timed challenge or timed game is about to end, by mrkubax10 and Alayan
### Mobile
* Fix a precision issue that caused artefacted shadows, by icecream95 and Benau
#### iOS
* Use MojoAL instead of OpenAL, which iOS currently has issues with, by Benau
### Tracks and modeling
* Alien Signal, by Samuncle
* Ancient Colosseum Labyrinth, by Typhon306
* Improved Las Dunas Soccer, by Benau
* Add lap line extensions to Hacienda, Old Mine, Ravenbridge Mansion and Shifting Sands, by Benau
* New Pepper kart, by ZAQraven99
* Improved Adiumy, Emule, GNU and Sara karts, by ZAQraven99
## SuperTuxKart 1.2 (27. August 2020)
### Networking
* Add support for IPv6 LAN servers, by Benau
* Auto-detect client IPv4 and IPv6 support, by Benau
* Improved server creation speed and performance, by Benau
* Allow to use any addon karts online, on servers with live join enabled, by Benau. The kart has Tux's hitbox.
* Prevent undefined behaviour on battle/soccer servers with an excessive player limit, by Benau
* Use an improved rating formula for ranked play, by Alayan
### General
* Use SDL2 for window creation, allowing better gamepad support, by Benau
* Replace Fribidi by SheeBidi for RTL support, and remove the dependency to libraqm, by Benau
* Add support for in-race messages in scripting, by CodedOre
* Improved tutorial with free-flow racing (no more text interrupts), by CodedOre
* Haiku support, by AlwaysLivid
* Make the game's window resizable in-game, by Benau
* Download addon icons on-demand to speed-up the addons list loading, by Benau
* Allow theming of icons, by QwertyChouskie
* Many many bugfixes and enhancements
### Mobile
* Many minor bugfixes and compatibility enhancements
#### Android
* Use the android app bundle, allowing all tracks to be included, by Benau
* Use the native progress indicator during game data extraction, by Benau
* Add a launch splash screen, by Benau
#### iOS
* Allow server creation in-game by using only one process for client and server, by Benau
### User Interface
* Introduce element padding for skins, by QwertyChouskie
* New Cartoon skin, by LCP (art) and QwertyChouskie (code)
* Allow to rename control configurations, by GuillaumeBft
* Unthrottled keyboard navigations in menus, by Benau
* Show mobile players as such in server lobbies, using an emoji icon, by riso
* Always show the race end times in ms, by Fouks
* SVG icons support, by riso
* New tips for soccer mode
#### In-race UI
* Introduce camera settings in the options screen, by luffah
* More spectator cameras in online spectating, by luffah
* Add a minimap indicator for basketballs, by Alayan
* Add team chat for team games, by Benau
* Show the kart orientation on the soccer minimap, by riso
* Show a message once a goal is made in soccer, by riso
### Tracks and modeling
#### Karts
* New version of Kiki, by Typhon306 and ZAQraven99
* Improved karts, by Crystal
* Pidgin, Puffy
* Improved beastie animation, by D_ft Kid
Changelog:
SuperTux 0.6.3 (2021-12-22)
---------------------------
The SuperTux team is excited to announce the release of SuperTux 0.6.3 after approximately 1.5 years of development. This release introduces many new features; perhaps the most new features in a long time!
Some of the most significant changes include:
- WASM compilation! SuperTux nightlies can now be played directly in the browser (thanks to Semphris)
- Added swimming (thanks to Daniel and Zwatotem)
- Added walljumping (thanks to Daniel)
- Autotiles (thanks to Semphris)
- Updated animations (thanks to Alzter, Daniel and RustyBox)
- Refreshed many contrib worldmaps (thanks to Servalot)
- Many updates to paths, with easing, bezier curves, path sharing between objects, and more (thanks to Semphris)
- Remade the crystal tileset (thanks to Alzter and RustyBox)
- Many new snow tiles (thanks to Daniel)
- Many new objects, like the sideways bumper and falling blocks (thanks to Daniel)
- Custom particles (thanks to Semphris)
- A new rublight object (thanks to HybridDog)
- Official binaries for FreeBSD, Linux 32-bit and Ubuntu Touch (thanks to Semphris)
- Added in-game progress statistics (thanks to Semphris)
- New color picker based on OKLab (thanks to HybridDog)
- Add-on creator, to easily create add-on packages with your world (thanks to Semphris)
- Rework of the Revenge in Redmond worldmap (thanks to RustyBox)
- Added timeshift ambience in the worldmap (thanks to Semphris)
- Skippable cutscenes (thanks to Semphris)
- Editor auto-saves at regular intervals (thanks to Semphris)
- Optional integration with Discord (thanks to Semphris)
- Updated translations, of course (thanks to translators)
And these are just the most significant changes; there are plenty of other small features and bugfixes for you all to explore :)