Skip to content

Releases: ppy/osu-framework

2024.129.1

29 Jan 10:45
a1585bf
Compare
Choose a tag to compare

What's Changed

Full Changelog: 2024.127.0...2024.129.1

2024.127.0

27 Jan 11:20
20b6d9e
Compare
Choose a tag to compare

What's Changed

  • Fix allocation overhead in TabFillFlowContainer when it can't fit all the items by @EVAST9919 in #6148
  • Write log header later to ensure game identifiers are present by @peppy in #6138
  • Add the ability to solo a test in visual testing using [Solo] attribute by @peppy in #6137

Full Changelog: 2024.121.1...2024.127.0

2024.121.1

21 Jan 01:47
f6feea4
Compare
Choose a tag to compare

Breaking Changes

DrawablePool.Get() wil now throw if the DrawablePool did not begin load

Previously the pool would return drawables correctly before load, but it would not initialise the pool to correct default size, causing overheads on drawable retrieval (usually on update thread).

HostOptions.BindIPC has been superseded by HostOptions.IPCPort

Previously, the IPC port used for multiple instances of a single osu!framework app was hardcoded in the IPC host itself, effectively making it so that all osu!framework apps would share the same IPC port, which obviously cannot work.

To allow multiple osu!framework apps to utilise IPC concurrently, BindIPC has thus been replaced by IPCPort.

  • Setting IPCPort = null is equivalent to BindIPC = false.
  • Setting IPCPort to a non-null value is equivalent to BindIPC = true and will force the use the specific port provided.

Note that it is advised to use a "user port" (in the range of 1024-49151) as per RFC 6335.

What's Changed

  • Include rounded corner radius in android safe area implementation by @bdach in #6143
  • Ignore autogenerated .idea android file by @Susko3 in #6144

Full Changelog: 2024.121.0...2024.121.1

2024.114.0

14 Jan 13:31
92db55a
Compare
Choose a tag to compare

What's Changed

  • Fix KeyCombination throwing when duplicates are fed in by @peppy in #6130
  • Fix incorrect implementation of OsuTKWindow.Displays by @bdach in #6132

Full Changelog: 2024.113.0...2024.114.0

2024.113.0

12 Jan 18:09
cd28e1c
Compare
Choose a tag to compare

What's Changed

  • Reduce input processing overheads in PassThroughInputManager by @peppy in #6120
  • Avoid creating a new texture in SmoothPath if the existing one is already the correct size by @peppy in #6119
  • Remove allocations when checking if mouse outside all displays by @peppy in #6123
  • Reduce string allocations during shader creation by @peppy in #6121
  • Remove delegate allocation in jitter calculation in FramedClock by @peppy in #6122
  • Remove VeldridTexture.Bind() by @smoogipoo in #6128
  • Remove overheads of MIDI device polling by @peppy in #6125
  • Remove allocations during bass device sync polling operation by @peppy in #6124
  • Reduce allocation overhead for keyboard / binding / button handling by @peppy in #6126

Full Changelog: 2024.110.0...2024.113.0

2024.110.0

10 Jan 13:32
631577e
Compare
Choose a tag to compare

What's Changed

  • Add setting to control automatic minimising on focus loss in fullscreen mode by @Susko3 in #6094
  • add window hide/show methods (preliminary work for boss key) by @adryzz in #6085
  • Fix android storage path on .NET 8 by @i3ym in #6100
  • Fix dropdown header handling platform actions when not hovered by @frenzibyte in #6096
  • Make Insert for SlimReadOnlyListWrapper unsupported by @Terochi in #6103
  • Update year references by @bastianpedersen in #6107
  • Set process priority of framework window to high when focused by @peppy in #6104
  • Use HashSet instead of List for temporary check in transform handling by @peppy in #6106
  • Reduce allocs when setting value on BindableNumber with precision by @smoogipoo in #6109
  • Remove per-call array allocations from InputSampler by @peppy in #6108
  • Simplify SpriteIcon by @EVAST9919 in #6111
  • Remove alloc overhead for NormalizedValue by @peppy in #6116
  • Fix insane joystick allocations overhead by @peppy in #6115
  • Fix frame statistics display GC boxes not correctly being cleaned up by @peppy in #6118
  • Expose RunTestsFromNUnit as public by @peppy in #6113

New Contributors

Full Changelog: 2023.1227.1...2024.110.0

2023.1227.1

27 Dec 13:14
71610ef
Compare
Choose a tag to compare

What's Changed

  • Disable WASAPI initialisation mode for now by @peppy in #6093
  • Fix Windows Ink events being handled as touch events by @Susko3 in #5309

Full Changelog: 2023.1227.0...2023.1227.1

2023.1227.0

27 Dec 02:27
396c9f8
Compare
Choose a tag to compare

What's Changed

  • Fix audio device names not being populated in time for bass device initialisation by @peppy in #6090
  • Bump OpenTabletDriver to 0.6.4.0 by @X9VoiD in #6086
  • Rename concept of "global" mixer with "fallback" by @peppy in #6091
  • Add basic global statistics for input handler events by @Susko3 in #6087
  • Add low latency initialisation support on windows by directly interacting with WASAPI by @peppy in #6088

Full Changelog: 2023.1219.0...2023.1227.0

2023.1219.0

18 Dec 18:22
d267e0f
Compare
Choose a tag to compare

What's Changed

  • Fix dropdowns showing popup keyboard on mobile even when search bar is initially hidden by @peppy in #6080

Full Changelog: 2023.1213.0...2023.1219.0

2023.1213.0

13 Dec 05:00
ba569bf
Compare
Choose a tag to compare

Breaking changes

IParseable.Parse() has received an IFormatProvider argument

This is provided to better treat input when typed by end users, by allowing the ability to respect their regional number settings.

Existing usages of IParseable.Parse() should pass CultureInfo.InvariantCulture to preserve behaviour, including usages of IBindable.Parse():

  Bindable<int> bindable = new Bindable<int>();
- bindable.Parse(5);
+ bindable.Parse(5, CultureInfo.InvariantCulture);

DrawNode.Draw() is no longer exposed publicly

Draw() is now protected to match the signature of DrawOpaqueInternal(). DrawNodes which draw others no need to do so via a separate (provided) method.

- public override void Draw(IRenderer renderer)
+ protected override void Draw(IRenderer renderer)
  {
      base.Draw(renderer);

-     other.Draw(renderer);
+     DrawOther(other, renderer);
  }

Dropdown requires a search bar to be implemented

All Dropdowns may now be searched, which requires them to implement a search bar component. Sample implementation:

public partial class MyDropdownHeader : DropdownHeader
{
    protected override DropdownSearchBar CreateSearchBar() => new MyDropdownSearchBar();

    public partial class MyDropdownSearchBar : DropdownSearchBar
    {
        protected override void PopIn() => this.FadeIn();

        protected override void PopOut() => this.FadeOut();

        protected override TextBox CreateTextBox() => new MyTextBox
        {
            PlaceholderText = "type to search"
        };
    }
}

What's Changed

  • Request READ_EXTERNAL_STORAGE permission on older android versions by @Susko3 in #6071
  • Cleanup DrawNode drawing methods by @smoogipoo in #6073
  • FFmpeg: Add VP6 and WMV2 video formats by @FreezyLemon in #6074
  • Add a session timestamp prefix to log files (and retain 7 days of logs) by @peppy in #6063
  • Update FFmpeg binaries by @github-actions in #6076
  • Add format provider argument to IParseable.Parse() by @Neuheit in #6065
  • Add proper handling for BindableList collection changes in dropdown by @frenzibyte in #6061
  • Add method to convert piecewise linear curves to spline control points by @OliBomby in #6056
  • Improve incremental B-spline builder via stochastic optimisation by @OliBomby in #6066
  • Implement dropdown searching by @frenzibyte in #6072

New Contributors

Full Changelog: 2023.1201.1...2023.1213.0