1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-16 16:48:22 +08:00
Commit Graph

42378 Commits

Author SHA1 Message Date
Dan Balasescu
fefcd17db9
Fix gameplay PP counter not matching results screen 2024-04-08 22:34:11 +09:00
Bartłomiej Dach
d6b1e68ee7
Merge branch 'master' into update-hit-error-icons 2024-04-05 09:36:18 +02:00
Dan Balasescu
7b92c725b1
Revert "Merge pull request #27454 from EVAST9919/sb-lifetime-improvements"
This reverts commit 0881e7c8c1, reversing
changes made to 29a37e3585.
2024-04-05 14:45:49 +09:00
Dean Herbert
10d1308a0a
Update resources 2024-04-04 15:05:59 +08:00
Dan Balasescu
cd474de61f
Update osu.Framework package 2024-04-04 15:55:05 +09:00
Dean Herbert
9521c1e3e4
Update hit error metre to use new icons
- [ ] Depends on https://github.com/ppy/osu-resources/pull/317.
2024-04-04 14:31:40 +08:00
Dean Herbert
2e1d63a1c2
Merge pull request #27783 from 64ArthurAraujo/add-invalid-beatmap-hash-custom-message
Add custom message in the case of a `invalid beatmap_hash`
2024-04-04 10:47:22 +08:00
Arthur Araujo
9e92ebaa43
Make message more general
Co-authored-by: Walavouchey <36758269+Walavouchey@users.noreply.github.com>
2024-04-03 19:15:22 -03:00
Arthur Araujo
8e00368f7c Add custom message in the case of a invalid beatmap_hash 2024-04-03 11:30:14 -03:00
Bartłomiej Dach
9d54f1a092
Fix some maps requiring multiple intro skips that weren't there on stable
Closes https://github.com/ppy/osu/issues/25633.

The reason why that particular beatmap did not have a double skip
on stable is here:

    e53980dd76/osu!/GameModes/Play/Player.cs#L1761-L1770

The particular place of interest is the `leadInTime < 10000` check.
If `leadInTime < 10000`, then `leadIn == leadInTime`, and it turns out
that `AudioEngine.Time` will always be more than or equal to `leadIn`,
because it's also the gameplay start time:

    e53980dd76/osu!/GameModes/Play/Player.cs#L2765

This essentially means that if the `leadInTime` is less than 10000,
that particular check is just dead. So a double skip can only occur
if the gameplay starts at time -10000 or earlier due to the storyboard.
2024-04-03 16:12:20 +02:00
Mafalda Fernandes
16276dfcd6 Fix #27105: Mod search box doesnt track external focus changes
In the Mod selection area, the search bar's focus could be changed by pressing TAB.
However, when clicking outside of the search bar, the focus would be killed but two TABs were required to get the focus back on the search bar.
This happened because the action of clicking in an empty area would trigger the search bar to change its appearence, but not its internal state.
In my solution, I made the OnClick function aware of the search bar's state, so it would not only change its appearance, but also its state.
Now, after clicking in an empty area, there is only needed one TAB to select the search box again, as expected.
2024-04-03 14:06:11 +01:00
Bartłomiej Dach
6d6412afdf
Merge branch 'master' into fix-skineditor-external-event-bind 2024-04-03 11:42:15 +02:00
Bartłomiej Dach
05fe8968d8
Only interact with clipboard via bound copy 2024-04-03 11:39:12 +02:00
Dan Balasescu
ce68f6adb7
Fix SkinEditor binding event to external bindable 2024-04-03 17:46:26 +09:00
Dan Balasescu
b5adcf2e0e
Fix SpectatorClient holding references to Player 2024-04-03 17:32:02 +09:00
Bartłomiej Dach
cb82fb0487
Merge branch 'master' into mania-key-count-mod-query 2024-04-03 09:29:32 +02:00
Dean Herbert
94cbe1838f
Replace usages of is null with == null 2024-04-03 01:50:39 +08:00
Dean Herbert
aa7b357063
Merge pull request #27768 from 64ArthurAraujo/editor-fix-sliders-same-start-time-merge
Fix merging sliders with the same `StartTime` causing a Unhandled Exception
2024-04-03 01:45:55 +08:00
Arthur Araujo
2a2a372595 Check if blueprint is in SelectionBlueprints before changing its depth 2024-04-02 07:45:27 -03:00
Dean Herbert
51e9348d27
Merge pull request #26702 from honguyenminh/fix-rotate-editor-button-disabled
Fix rotate tool button in editor disabled when selecting 1 circle
2024-04-02 14:31:43 +08:00
Dan Balasescu
4806ea54f1
Only optimise Catmull segments in osu ruleset 2024-04-01 17:22:50 +09:00
Dan Balasescu
d12a2e7df7
Replace schedule with SequenceEqual() 2024-04-01 17:02:02 +09:00
Dean Herbert
95b50576bd
Merge pull request #27698 from bdach/banish-rulesets-that-do-stupid-crap-to-the-BLAGOLE
Attempt to disable custom rulesets that can be linked to an unhandled crash
2024-04-01 15:47:47 +08:00
Andrei Zavatski
11b1135804 Adjust blurred icons position due to size handling differences 2024-03-31 01:55:34 +03:00
Andrei Zavatski
58a68e94af Simplify glowing icons in break overlay 2024-03-31 01:44:54 +03:00
Andrei Zavatski
54472e6452 Decouple GlowingDrawable from GlowingSpriteText 2024-03-31 01:44:54 +03:00
Nguyên Minh Hồ
6f782266b5 Fix inspection 2024-03-30 17:28:57 +07:00
Nguyên Minh Hồ
5d497ba4a8 Simplify TooltipText for EditorRadioButton 2024-03-30 16:04:22 +07:00
Nguyên Minh Hồ
9950395e5f Merge branch 'fix-rotate-editor-button-disabled' of https://github.com/honguyenminh/osu into fix-rotate-editor-button-disabled 2024-03-30 13:57:44 +07:00
Nguyên Minh Hồ
113dbcd10f
Merge branch 'master' into fix-rotate-editor-button-disabled 2024-03-30 13:56:31 +07:00
Dan Balasescu
48f8d9c916
Merge pull request #27756 from bdach/pp-on-results-provisional
Apply partial fade on pp display on results screen when score will not give pp
2024-03-29 19:57:59 +09:00
Bartłomiej Dach
5371141d3b
Merge pull request #27755 from peppy/fix-import-weirdness
Avoid reporting an import as successful when all beatmaps failed to import
2024-03-29 11:25:41 +01:00
Bartłomiej Dach
e06df34a1c
Apply partial fade on pp display on results screen when score will not give pp 2024-03-29 11:16:31 +01:00
Bartłomiej Dach
2d3b273974
Remove redundant string interpolation 2024-03-29 10:37:49 +01:00
Dean Herbert
233b9eb172
Avoid reporting an import as successful when all beatmaps failed to import 2024-03-29 17:11:55 +08:00
Dean Herbert
d9cf5b5440
Fix bindable not being correctly re-bound across local user changes 2024-03-29 15:50:10 +08:00
Dean Herbert
fef8afb833
Fix double binding causing game crash after API enters failing state
See https://sentry.ppy.sh/organizations/ppy/issues/33406/?alert_rule_id=4&alert_timestamp=1711655107332&alert_type=email&environment=production&project=2&referrer=alert_email
2024-03-29 12:19:14 +08:00
Dan Balasescu
6e746a0fa0
Fix carousel reoder on initial enter 2024-03-28 23:56:46 +09:00
Dan Balasescu
9fd6449fd8
Add mods to FilterCriteria, pass to ruleset method 2024-03-28 23:03:26 +09:00
Dan Balasescu
10edb54614
Add ability to query key count with mods 2024-03-28 22:51:12 +09:00
Dan Balasescu
5febd40bd9
Add HP and AR to LegacyBeatmapConversionDifficultyInfo 2024-03-28 22:30:39 +09:00
Susko3
53900d5472 Fix tests failing locally due to not using invariant culture 2024-03-27 18:56:26 +01:00
Dan Balasescu
600098d845
Fix bulbs on Catmull sliders 2024-03-27 04:05:04 +09:00
Bartłomiej Dach
6ef54321c4
Merge pull request #26707 from peppy/beat-sync-container-early-adjust
Adjust `BeatSyncContainer`'s early animate offset based on source's rate
2024-03-26 18:43:25 +01:00
Bartłomiej Dach
0b29a762b8
Add precautionary guard to avoid potential div-by-zero
Probably wouldn't happen outside of tests, but I'd rather not find out
next release.
2024-03-26 17:36:40 +01:00
Dean Herbert
a5f15a119e
Apply rate adjust fix in all cases rather than specifically for Clock.Rate == 1 2024-03-26 22:51:54 +08:00
Dean Herbert
eae8e243c6
Merge branch 'master' into beat-sync-container-early-adjust 2024-03-26 21:31:33 +08:00
Bartłomiej Dach
bc1ffb0b6e
Merge branch 'master' into shared-menu-content 2024-03-26 13:47:44 +01:00
Dean Herbert
e77d4c8cfa
Remove unnecessary Math.Max 2024-03-26 20:28:03 +08:00
Dean Herbert
fd649edaba
Also don't rotate images during a drag operation 2024-03-26 20:21:48 +08:00
Dean Herbert
9474156df4
Improve equality implementations 2024-03-26 20:21:12 +08:00
Bartłomiej Dach
56dc6bb192
Merge branch 'master' into feat/support-filtering-for-multiple-types 2024-03-26 12:39:51 +01:00
Bartłomiej Dach
e52d51cd0a
Update OptionalSet implementation to intersect across multiple filters rather than union 2024-03-26 12:32:03 +01:00
Bartłomiej Dach
b74f8dba41
Merge branch 'master' into verify-abnormal-difficulty-settings 2024-03-26 11:13:16 +01:00
Bartłomiej Dach
1866b4b6b1
Refactor abstract check to reduce duplication 2024-03-26 11:13:03 +01:00
Bartłomiej Dach
73926592b9
Bump legacy score version to recalculate all scores 2024-03-25 19:27:38 +01:00
Bartłomiej Dach
4979305b2d
Ensure TryDisableCustomRulesetsCausing() never actually crashes itself 2024-03-25 11:34:29 +01:00
Bartłomiej Dach
fb08d6816b
Only attempt to disable rulesets when decidedly crashing out 2024-03-25 11:33:15 +01:00
Dean Herbert
bb9fa52fda
Fix displayIndex not being correctly set to -1 after last expiry date 2024-03-25 14:53:05 +08:00
Dean Herbert
057f86dd14
Add handling of expiration 2024-03-25 14:31:05 +08:00
Dean Herbert
f0614928b1
Read from new location 2024-03-25 13:19:12 +08:00
Dean Herbert
e9f15534ed
Improve test coverage 2024-03-25 12:33:32 +08:00
Dean Herbert
3847aae57d
Don't rotate when hovering 2024-03-25 12:14:40 +08:00
Dean Herbert
d0b164b44f
Add automatic rotation support 2024-03-25 11:41:50 +08:00
Dean Herbert
a4c619ea97
Add basic support for loading multiple images 2024-03-24 15:14:56 +08:00
Dean Herbert
ec4a9a5fdd
Make work again for simple case 2024-03-24 14:55:45 +08:00
Dean Herbert
ef2a16dd8f
Various renaming and class updates to allow multiple menu banners 2024-03-24 14:55:43 +08:00
Arthur Araujo
8a05fecad5 Fix formatting issue 2024-03-23 23:28:55 -03:00
Arthur Araujo
6fbe1a5b8d Add video resolution check 2024-03-23 19:22:47 -03:00
Bartłomiej Dach
c7c0330265
Attempt to disable rulesets that can be linked to an unhandled crash 2024-03-22 19:05:58 +01:00
Bartłomiej Dach
a1880e89c2
Use title as tiebreaker when sorting beatmap carousel by artist
Closes https://github.com/ppy/osu/issues/27548.

Reference: e53980dd76/osu!/GameplayElements/Beatmaps/BeatmapTreeManager.cs#L341-L347
2024-03-22 08:41:10 +01:00
Arthur Araujo
a4822fd615 Make CheckAbnormalDifficultySettings abstract 2024-03-22 01:37:06 -03:00
Salman Ahmed
1efa08a1b8
Merge branch 'master' into convert-path-string-new 2024-03-22 05:15:04 +03:00
Dean Herbert
970e45ff24
Merge pull request #26937 from frenzibyte/fix-osu-logo-blocking-load
Stop blocking player load when hovering over osu! logo
2024-03-21 21:52:25 +08:00
Bartłomiej Dach
3e764ae4f0
Merge pull request #27639 from 64ArthurAraujo/verify-unused-audio-at-end
Add verify checks to unused audio at the end
2024-03-21 12:19:53 +01:00
Bartłomiej Dach
983385bafc
Merge pull request #27677 from smoogipoo/fix-catch-banana-fail
Fix catch banana shower judgement causing fail when at 0 HP
2024-03-21 11:23:51 +01:00
Dean Herbert
c081cc7d77
Merge pull request #27681 from smoogipoo/add-deployed-build-attribute
Warn about not using an official "deployed" build
2024-03-21 14:13:40 +08:00
Dean Herbert
b99b0337cf
Adjust text slightly 2024-03-21 13:06:25 +08:00
Dean Herbert
0589924dc6
Merge pull request #27079 from smoogipoo/tcm-resume
Add delayed resume for taiko/catch/mania
2024-03-21 12:48:53 +08:00
Dean Herbert
55d66d4615
Add sounds to countdown 2024-03-21 11:45:48 +08:00
Dean Herbert
a07d5115bf
Update resources 2024-03-21 11:42:22 +08:00
Arthur Araujo
b132734f9c Fix codefactor issues 2024-03-20 18:54:38 -03:00
Arthur Araujo
c605e463a4 Add mania keycount check 2024-03-20 15:52:16 -03:00
Dan Balasescu
ac7fca10d6
Warn about not using an official "deployed" build 2024-03-21 00:47:45 +09:00
Arthur Araujo
4904c49c38 Add abnormal difficulty settings checks 2024-03-20 09:31:58 -03:00
Dan Balasescu
c78e203df5
Fix infinite health processor loop when no top-level objects
This is unlikely to occur in actual gameplay, but occurs in the
follow-up test.
2024-03-20 17:30:37 +09:00
Bartłomiej Dach
1f343b7545
Add extended logging when discarding online metadata lookup results
Related to: https://github.com/ppy/osu/issues/27674

Relevant log output for that particular case:

	[network] 2024-03-20 07:25:30 [verbose]: Performing request osu.Game.Online.API.Requests.GetBeatmapRequest
	[network] 2024-03-20 07:25:30 [verbose]: Request to https://dev.ppy.sh/api/v2/beatmaps/lookup successfully completed!
	[network] 2024-03-20 07:25:30 [verbose]: GetBeatmapRequest finished with response size of 3,170 bytes
	[database] 2024-03-20 07:25:30 [verbose]: [4fe02] [APIBeatmapMetadataSource] Online retrieval mapped Tsukiyama Sae - Hana Saku Iro wa Koi no Gotoshi (Log Off Now) [Destiny] to 744883 / 1613507.
	[database] 2024-03-20 07:25:30 [verbose]: Discarding metadata lookup result due to mismatching online ID (expected: 1570982 actual: 1613507)
	[network] 2024-03-20 07:25:30 [verbose]: Performing request osu.Game.Online.API.Requests.GetBeatmapRequest
	[network] 2024-03-20 07:25:30 [verbose]: Request to https://dev.ppy.sh/api/v2/beatmaps/lookup successfully completed!
	[network] 2024-03-20 07:25:30 [verbose]: GetBeatmapRequest finished with response size of 2,924 bytes
	[database] 2024-03-20 07:25:30 [verbose]: [4fe02] [APIBeatmapMetadataSource] Online retrieval mapped Tsukiyama Sae - Hana Saku Iro wa Koi no Gotoshi (Log Off Now) [Easy] to 744883 / 1570982.
	[database] 2024-03-20 07:25:30 [verbose]: Discarding metadata lookup result due to mismatching online ID (expected: 1613507 actual: 1570982)

Note that the online IDs are swapped.
2024-03-20 08:28:11 +01:00
Bartłomiej Dach
8ee391530f
Merge pull request #27675 from peppy/remove-breadcrumb-control
Remove unused `ScreenBreadcrumbControl`
2024-03-20 08:02:36 +01:00
Dean Herbert
1f70019009
Merge pull request #27630 from EVAST9919/editor-performance
Improve editor performance for maps with many control points
2024-03-20 13:20:21 +08:00
Dean Herbert
fd509c82f5
Adjust code structure slightly 2024-03-20 12:52:54 +08:00
Dean Herbert
d83a53fc94
Remove unused ScreenBreadcrumbControl
See https://github.com/ppy/osu-framework/pull/6218#discussion_r1529932798.
2024-03-20 12:10:05 +08:00
Bartłomiej Dach
e4418547fe
Document GetLastObjectTime() exception on empty beatmap 2024-03-19 19:19:07 +01:00
Bartłomiej Dach
2b83e6bc4c
Fix check crash on empty beatmap 2024-03-19 19:17:22 +01:00
Bartłomiej Dach
af3f7dcbbf
Retouch update criteria method 2024-03-19 18:33:35 +01:00
Bartłomiej Dach
320373e3e0
Rename method to match convention better 2024-03-19 18:28:13 +01:00
Bartłomiej Dach
feaf59e15f
Use HashSet instead of SortedSet
No need for it to be sorted.
2024-03-19 18:26:58 +01:00
Dean Herbert
0de5ca8d2d
Update incorrect xmldoc 2024-03-20 01:26:39 +08:00
Dean Herbert
35df381717
Merge branch 'master' into tcm-resume 2024-03-20 01:25:40 +08:00
Bartłomiej Dach
0180b25546
Merge pull request #27064 from smoogipoo/heatmap-misses
Display misses in the hit accuracy heatmap
2024-03-19 16:20:25 +01:00
Dan Balasescu
f6069d8d93
Compare against MaxCombo instead 2024-03-19 17:46:18 +09:00
Dan Balasescu
6e33509417
Remove added property, use local decoding instead 2024-03-19 17:44:37 +09:00
Dan Balasescu
af713a7869
Fix incorrectly encoded score IsPerfect value 2024-03-19 17:20:59 +09:00
Salman Ahmed
bbdcb38f5d
Merge branch 'master' into convert-path-string-new 2024-03-19 02:51:24 +03:00
Salman Ahmed
a8ce6a0bba Use Slice method instead of index range operators for readability 2024-03-19 02:43:36 +03:00
Arthur Araujo
5241c999c1 Add different warning to maps with storyboard/video 2024-03-18 16:08:41 -03:00
Arthur Araujo
f6d7f18f25 Remove unused localisation file 2024-03-18 15:59:19 -03:00
Andrei Zavatski
7ca45c75b3 Don't iterate backwards on children without a reason 2024-03-18 20:46:38 +03:00
Andrei Zavatski
0edc249637 Make Timeline non-nullable 2024-03-18 20:38:19 +03:00
Andrei Zavatski
57399e9899 Merge branch 'master' into editor-performance 2024-03-18 20:34:48 +03:00
Arthur Araujo
c23212f4ef Use GetLastObjectTime to calculate mapped length 2024-03-18 14:02:33 -03:00
Arthur Araujo
915a9682b5 Fix issue type and display percentage left 2024-03-18 13:51:36 -03:00
Arthur Araujo
a3f3dcf853 Inline percentage calculation 2024-03-18 13:27:43 -03:00
Vlad Frangu
77119b2cdb
chore: correct doc string 2024-03-18 16:44:42 +02:00
Bartłomiej Dach
c9bbeeb49a
Merge branch 'master' into heatmap-misses 2024-03-18 14:43:24 +01:00
Vlad Frangu
d0678bfbee
chore: requested changes 2024-03-18 15:30:43 +02:00
Dean Herbert
498948f17d
Merge pull request #27607 from Joehuu/fix-beatmap-card-lime-artifact
Fix noticeable masking artifact of beatmap cards when already downloaded
2024-03-18 00:38:56 +08:00
Arthur Araujo
f7aff76592 Fix codefactor issues 2024-03-16 23:03:06 -03:00
Arthur Araujo
63816adbc0 Add verify checks to unused audio at the end 2024-03-16 21:20:12 -03:00
Vlad Frangu
e1c1609271
chore: correct equal logic 2024-03-16 21:48:44 +02:00
Vlad Frangu
0a6960296e
feat: Support filtering for multiple statuses 2024-03-16 21:32:55 +02:00
Andrei Zavatski
34a5e2d606 Don't update subtree masking in TimelineTickDisplay 2024-03-16 15:20:37 +03:00
Andrei Zavatski
981ee54cdc Fix transforms overhead in TimelineTickDisplay 2024-03-16 15:05:52 +03:00
Andrei Zavatski
e825db61ee Fix enumerator allocation 2024-03-16 12:26:56 +03:00
Andrei Zavatski
854d7c6fb4 Merge branch 'master' into editor-performance 2024-03-16 12:26:39 +03:00
Andrei Zavatski
ea3a9314f9 Improve TimelineControlPointDisplay performance 2024-03-16 11:57:18 +03:00
Dean Herbert
15c0b1a2ec
Remove redundant cast 2024-03-16 13:18:42 +08:00
Dean Herbert
a49c4ebea6
Match settings panels' backgrounds visually and behaviourally 2024-03-16 10:23:21 +08:00
Dean Herbert
0f8d526453
Adjust timings and delay disclaimers the same as settings 2024-03-16 10:09:49 +08:00
Bartłomiej Dach
a78210c88f
Handle hover so that users can hover disclaimer to block load & read it 2024-03-15 11:45:27 +01:00
Bartłomiej Dach
e6883b8418
Tweak visuals further 2024-03-15 11:38:51 +01:00
Bartłomiej Dach
51568ba06a
Add background to disclaimers 2024-03-15 11:31:45 +01:00
Bartłomiej Dach
5513a72748
Improve hiding transition when multiple disclaimers are visible 2024-03-15 11:01:34 +01:00
Bartłomiej Dach
49a087f7fc
Add localisation support 2024-03-15 10:59:49 +01:00
Bartłomiej Dach
4688a53cf4
Stay on player loader a bit longer if disclaimers are present
Just to make reading the text easier.
2024-03-15 09:53:20 +01:00
Bartłomiej Dach
f3a444b7ac
Add disclaimer for loved/qualified status 2024-03-15 09:53:20 +01:00
Bartłomiej Dach
42ae18976f
Replace existing epilepsy warning with inline display 2024-03-15 09:53:20 +01:00
Bartłomiej Dach
1aa695add9
Implement alternate design of player loader disclaimers 2024-03-15 09:53:18 +01:00
Dean Herbert
23975d4dd1
Add flash and reduce overall time for countdown to 2 seconds 2024-03-14 22:49:53 +08:00
Dean Herbert
2845303a74
Fix non-matching scale outwards animation 2024-03-14 22:45:05 +08:00
Dean Herbert
888245b44f
Reorder methods 2024-03-14 22:44:26 +08:00
Dean Herbert
d7769ec3e2
Adjust animation 2024-03-14 22:44:23 +08:00
Dean Herbert
42bd558d7c
Only update text when necessary (reducing unnecessary string allocadtions) 2024-03-14 22:43:08 +08:00
Joseph Madamba
f8a841e907 Add comment explaining why width is limited to the button area
Same comment as a47ccb8edd/osu.Game/Screens/Select/BeatmapInfoWedgeV2.cs (L91-L92).
2024-03-14 00:17:22 -07:00
Salman Ahmed
b4cee12db9 Use defined colours for counter background 2024-03-14 09:22:03 +03:00
Joseph Madamba
b309aad895 Fix noticeable masking artifact of beatmap cards when already downloaded
Had a similar fix before seeing https://github.com/ppy/osu/pull/20743#discussion_r994955470, but using that diff instead so co-authoring.

Co-Authored-By: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2024-03-13 22:36:52 -07:00
Dan Balasescu
b431bb1176
Resolve post-merge issues 2024-03-14 12:24:12 +09:00
Dan Balasescu
0beaa8e8c5
Merge branch 'master' into tcm-resume 2024-03-14 12:22:46 +09:00
Dan Balasescu
789a9f4dfa
Initial redesign following flyte's design 2024-03-14 11:38:16 +09:00
Dean Herbert
a47ccb8edd
Merge pull request #27600 from bdach/dont-die-on-audio-in-video-check
Fix audio in video check crashing on unexpected failures
2024-03-14 10:28:45 +08:00
Bartłomiej Dach
d32f19b546
Fix first word bold not applying correctly after first language change
Closes https://github.com/ppy/osu/issues/27549.

I'm not entirely sure why the old solution failed exactly, but also
think it's unimportant because I think past me was an idiot and was
playing stupid games with the juggling of indices between two callbacks
with no ordering guarantees and expecting not to win stupid prizes.

I'm not sure this requires any follow-up reconsiderations of that entire
text flow API, but if opinions differ, I'll re-examine.
2024-03-13 15:18:20 +01:00