Skip to content

Commit

Permalink
Merge branch 'master' into ES-Unstable_rate
Browse files Browse the repository at this point in the history
  • Loading branch information
TicClick authored Dec 8, 2023
2 parents cad8bc6 + edde811 commit 3fcdd1a
Show file tree
Hide file tree
Showing 224 changed files with 2,529 additions and 1,620 deletions.
5 changes: 3 additions & 2 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
* text=auto
*.md text eol=lf
*.sh text eol=lf
*.yaml text eol=lf
*.yml text eol=lf

# Fixes languages listing on GitHub
.remarkrc.js linguist-detectable=false
scripts/**/* linguist-detectable=false
news/**/*.md linguist-detectable
wiki/**/*.md linguist-detectable
6 changes: 5 additions & 1 deletion .github/workflows/continuous-integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,4 +74,8 @@ jobs:

- name: check if translations are marked as outdated
if: ${{ !contains(github.event.pull_request.body, 'SKIP_OUTDATED_CHECK') }}
run: osu-wiki-tools check-outdated-articles --no-recommend-autofix
run: |
osu-wiki-tools check-outdated-articles \
--base-commit HEAD \
--no-recommend-autofix \
--outdated-since "$(git log --format=%H master.. | tail -n 1)"
15 changes: 10 additions & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ RUN apt-get update
# Install git
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y git

# Install gosu
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y gosu

# Install Node.js <https://github.com/nodesource/distributions#nodejs>
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y ca-certificates curl gnupg && \
mkdir -p /etc/apt/keyrings && \
Expand All @@ -14,12 +17,14 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get install -y ca-certificates curl gnupg
DEBIAN_FRONTEND=noninteractive apt-get install -y nodejs

WORKDIR /osu-wiki
COPY package.json package-lock.json requirements.txt /osu-wiki/

# Install osu-wiki tool dependencies
COPY package.json package-lock.json requirements.txt ./
RUN npm install && npm install -g osu-wiki && pip3 install -r requirements.txt

# Prevent git from refusing to work in a repository with "dubious ownership".
# The repository, mounted with --volume ...:/osu-wiki, is owned by a host user, and the container user is root.
# See run-checks.sh for more CI workarounds.
RUN git config --global --add safe.directory /osu-wiki
# Run the container with UID and GID of the host
COPY meta/docker-entrypoint.sh /
ENTRYPOINT ["/docker-entrypoint.sh"]

# By default, run all checks when the container is started
CMD ["meta/check-all.sh"]
61 changes: 61 additions & 0 deletions meta/check-all.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
#!/bin/sh

set -eu

test_output_pipe=/tmp/osu-wiki-test-output-pipe
rm -f "$test_output_pipe"
mkfifo "$test_output_pipe"

run_test() {
test_name="$1"
shift

printf '\033[1m## Running %s test...\033[m\n' "$test_name" >&2

# Run the test as a job, preserving its original stdin on fd 4, and directing
# all of its output to a pipe opened for reading on fd 3
exec 4<&0
"$@" <&4 >"$test_output_pipe" 2>&1 &
exec 3<"$test_output_pipe"

# If the test has output, print the first line with a preceding newline
if IFS= read -r first_line <&3; then
printf '\n%s\n' "$first_line" >&2
fi

# Stream the rest of the test's output
cat <&3 >&2

# If the test had output, print another newline
if test -n "$first_line"; then
printf '\n' >&2
fi

# Print the final message based on the exit code of the test
if wait $!; then
printf '\033[1;32m## Passed %s test.\033[m\n' "$test_name" >&2
else
printf '\033[1;31m## Failed %s test.\033[m\n' "$test_name" >&2
fi

# Close fd 3 and fd 4
exec 3<&- 4<&-
}

cd -- "$(dirname "$0")/.."

changed_files="$(
{
git diff --diff-filter=d --name-only --no-renames master
git ls-files --exclude-standard --others
} | sort -u
)"

printf '%s\n' "$changed_files" | run_test 'file size' xargs -r meta/check-file-sizes.sh
printf '%s\n' "$changed_files" | grep '\.md$' | run_test Remark xargs -r meta/remark.sh
run_test 'YAML style' osu-wiki-tools check-yaml
run_test link osu-wiki-tools check-links --all

if test -n "$(git log master..)"; then
run_test 'outdated article' osu-wiki-tools check-outdated-articles --no-recommend-autofix
fi
4 changes: 2 additions & 2 deletions meta/check-file-sizes.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ warning_files="$(find "$@" -type f -size +500000c -size -1000001c)"

exec >&2

if test "$warning_files"; then
if test -n "$warning_files"; then
printf '\033[33mWarning:\033[m The following files are larger than 500kB and should be compressed if possible:\n'
printf '%s\n' "$warning_files" | sort | sed 's/^/ /'
fi

if test "$error_files"; then
if test -n "$error_files"; then
printf '\033[31mError:\033[m The following files are larger than 1MB and must be compressed:\n'
printf '%s\n' "$error_files" | sort -u | sed 's/^/ /'
exit 1
Expand Down
21 changes: 21 additions & 0 deletions meta/docker-entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/bin/sh

set -eu -- meta/docker-msys-swap-git-index.sh "$@"

host_uid="$(stat -c %u /osu-wiki)"
host_gid="$(stat -c %g /osu-wiki)"

# If the host UID is root, just run the command. We are already root
if test "$host_uid" -eq 0; then
exec "$@"
fi

# If the host UID exists in the image, run gosu with that user
if id "$host_uid" >/dev/null 2>&1; then
exec gosu "$host_uid" "$@"
fi

# Otherwise, make a new user with the host UID and GID
groupadd -og "$host_gid" osu-wiki-docker
useradd -g "$host_gid" -u "$host_uid" osu-wiki-docker
exec gosu osu-wiki-docker "$@"
29 changes: 29 additions & 0 deletions meta/docker-msys-swap-git-index.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/bin/sh

set -eu

if test -z "$OSU_WIKI_MSYS"; then
exec "$@"
fi

mv -T .git/index .git/index-host

if test -f .git/index-container; then
mv -T .git/index-container .git/index
else
printf '\033[1m## This is your first time running the Docker container.\n' >&2
printf '## A separate git index needs to be maintained when using this container on Windows.\n' >&2
printf '## Please \033[4mDO NOT\033[0;1m run any git commands while this container is running.\n' >&2
printf '## Creating index... (this may take a while)\033[m\n' >&2
git reset >/dev/null 2>&1
printf '\033[1;32m## Created index. It will be stored at \033[4m.git/index-container\033[0;1;32m.\033[m\n' >&2
fi

"$@" && :

exit_code=$?

mv -T .git/index .git/index-container
mv -T .git/index-host .git/index

exit "$exit_code"
129 changes: 129 additions & 0 deletions news/2023/2023-12-02-new-featured-artist-knife.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
---
layout: post
title: "New Featured Artist: Knife"
date: 2023-12-02 20:00:00 +0000
---

**Knife**'s Touhou-themed tunes slip into our Featured Artist catalogue!

![](https://assets.ppy.sh/artists/391/header.jpg)

While **Knife** may not be a household name on osu! yet, there's a good chance you're familiar with the talent behind this circle!

Founded by veteran producer *WANI* (who's also responsible for Touhou-related units *Sally* and *monochrome-coat*) along with vocalist *Koala* and illustrator *Fuukadia*, **Knife** has been delivering back-to-back-to-back slaps since their founding in 2016.

Pre-timed beatmap templates for **5** new songs just arrived on your doorstep... assuming your doorstep is [**Knife**'s Featured Artist listing](https://osu.ppy.sh/beatmaps/artists/391). Unpack whichever song you're interested in and start mapping. We'll wait.

While you're busy mapping, feel free to put this video highlighting **Knife**'s [Negaigoto Liner 2020](https://osu.ppy.sh/beatmapsets/2049932) on your second monitor:

<div align="center">
<video width="95%" controls>
<source src="https://assets.ppy.sh/artists/391/release_showcase.mp4" type="video/mp4" preload="none">
</video>
</div>

### Knife - Negaigoto Liner 2020

Check out [the map from the video above](https://osu.ppy.sh/beatmapsets/2049932) hosted by [Hinsvar](https://osu.ppy.sh/users/1249323)!

<audio controls>
<source src="https://assets.ppy.sh/artists/391/Songs/Knife - Negaigoto Liner 2020.mp3">
</audio>

### Knife - Story

Or check out [this new osu!catch map](https://osu.ppy.sh/beatmapsets/2096026) by [Chatie](https://osu.ppy.sh/users/6524765)!

<audio controls>
<source src="https://assets.ppy.sh/artists/391/Songs/Knife - Story.mp3">
</audio>

### Knife - Jouzai

If you're too picky for either of those maps, maybe you should [make your own](https://assets.ppy.sh/artists/391/Songs/Knife%20-%20Jouzai.osz).

<audio controls>
<source src="https://assets.ppy.sh/artists/391/Songs/Knife - Jouzai.mp3">
</audio>

---

Mapping isn't easy, but [the latest osu!(lazer) update](https://osu.ppy.sh/home/news/2023-11-30-osulazer-updates-november-30) is making it a step more accessible through its new hand-drawn sliders feature. Conveniently, the map templates on [**Knife**'s Featured Artist listing](https://osu.ppy.sh/beatmaps/artists/391) are a good place to test that out! So do that.

## Featured Artist playlists

[A bit over a month ago](https://osu.ppy.sh/home/news/2023-10-28-new-featured-artist-dustvoxx), we debuted a new batch of [**Featured Artist playlists** in osu!(lazer)](/wiki/People/Featured_Artists/Featured_Artist_playlists).

A few days ago, those playlists concluded.

So here are the results!

Playlist leaders earn prizes based on [this cumulative leaderboard](/wiki/People/Featured_Artists/Featured_Artist_playlists#cumulative-leaderboard). Anyone with **10 total points** earns a profile badge for their respective mode:

![Featured Artist profile badge](https://assets.ppy.sh/profile-badges/fa-playlists/fapl-osu!.png) ![Featured Artist profile badge](https://assets.ppy.sh/profile-badges/fa-playlists/fapl-osu!taiko.png) ![Featured Artist profile badge](https://assets.ppy.sh/profile-badges/fa-playlists/fapl-osu!catch.png) ![Featured Artist profile badge](https://assets.ppy.sh/profile-badges/fa-playlists/fapl-osu!mania.png)

### osu!

| Rank | User | Points earned | [Total points](/wiki/People/Featured_Artists/Featured_Artist_playlists#cumulative-leaderboard) |
| --: | :-- | :-- | :-- |
| #1 | ::{ flag=RU }:: [desuqe](https://osu.ppy.sh/users/9712285) | 10 | **10** |
| #2 | ::{ flag=MY }:: [Zeph2003](https://osu.ppy.sh/users/10343292) | 5 | **11** |
| #3 | ::{ flag=US }:: [Willy](https://osu.ppy.sh/users/3521482) | 3 | 3 |
| #4 | ::{ flag=FI }:: [Wolfey-](https://osu.ppy.sh/users/10504284) | 2 | 7 |
| #5 | ::{ flag=US }:: [yencis](https://osu.ppy.sh/users/10852203) | 2 | 4 |
| #6 | ::{ flag=US }:: [mjmroh](https://osu.ppy.sh/users/25479104) | 1 | 3 |
| #7 | ::{ flag=US }:: [Majernja](https://osu.ppy.sh/users/11379588) | 1 | 2 |
| #8 | ::{ flag=US }:: [HiroFMS](https://osu.ppy.sh/users/16416081) | 1 | 1 |
| #9 | ::{ flag=US }:: [Doggie](https://osu.ppy.sh/users/4930467) | 1 | 1 |
| #10 | ::{ flag=US }:: [Stoppedpuma](https://osu.ppy.sh/users/12654568) | 1 | 4 |

### osu!taiko

| Rank | User | Points earned | [Total points](/wiki/People/Featured_Artists/Featured_Artist_playlists#cumulative-leaderboard) |
| --: | :-- | :-- | :-- |
| #1 | ::{ flag=JP }:: [Eriha](https://osu.ppy.sh/users/16320311) | 10 | **10** |
| #2 | ::{ flag=JP }:: [HaLTi](https://osu.ppy.sh/users/16650552) | 5 | **10** |
| #3 | ::{ flag=US }:: [AuroraPhasmata](https://osu.ppy.sh/users/13664116) | 3 | **18** |
| #4 | ::{ flag=FR }:: [Ranshi](https://osu.ppy.sh/users/6680785) | 2 | 2 |
| #5 | ::{ flag=US }:: [Arityle](https://osu.ppy.sh/users/18397349) | 2 | 8 |
| #6 | ::{ flag=FI }:: [Antti](https://osu.ppy.sh/users/13281473) | 1 | 1 |
| #7 | ::{ flag=JP }:: [Yukiama95](https://osu.ppy.sh/users/18535502) | 1 | 1 |
| #8 | ::{ flag=KR }:: [lnote_](https://osu.ppy.sh/users/14631339) | 1 | 1 |
| #9 | ::{ flag=CA }:: [DimplesRMe](https://osu.ppy.sh/users/13348268) | 1 | 2 |
| #10 | ::{ flag=US }:: [zachmanthethird](https://osu.ppy.sh/users/15048710) | 1 | 1 |

### osu!catch

| Rank | User | Points earned | [Total points](/wiki/People/Featured_Artists/Featured_Artist_playlists#cumulative-leaderboard) |
| --: | :-- | :-- | :-- |
| #1 | ::{ flag=CA }:: [WadBot](https://osu.ppy.sh/users/14571181) | 10 | **10** |
| #2 | ::{ flag=BR }:: [Predominador](https://osu.ppy.sh/users/4568537) | 5 | **10** |
| #3 | ::{ flag=VN }:: [Primakien](https://osu.ppy.sh/users/23941998) | 3 | **12** |
| #4 | ::{ flag=ID }:: [Mochi -](https://osu.ppy.sh/users/20424806) | 2 | 2 |
| #5 | ::{ flag=NL }:: [Chatie](https://osu.ppy.sh/users/6524765) | 2 | 8 |
| #6 | ::{ flag=RU }:: [Kimitakari](https://osu.ppy.sh/users/4741164) | 1 | **10** |
| #7 | ::{ flag=GB }:: [Adisi](https://osu.ppy.sh/users/12182399) | 1 | 1 |
| #8 | ::{ flag=CL }:: [DateLix](https://osu.ppy.sh/users/9200197) | 1 | 1 |
| #9 | ::{ flag=MK }:: [MysticalTeaPot](https://osu.ppy.sh/users/25198181) | 1 | 2 |
| #10 | ::{ flag=IL }:: [LiL L1ghtMare](https://osu.ppy.sh/users/16782179) | 1 | 1 |

### osu!mania

| Rank | User | Points earned | [Total points](/wiki/People/Featured_Artists/Featured_Artist_playlists#cumulative-leaderboard) |
| --: | :-- | :-- | :-- |
| #1 | ::{ flag=US }:: [0143](https://osu.ppy.sh/users/32695517) | 10 | **15** |
| #2 | ::{ flag=KR }:: [lnote_](https://osu.ppy.sh/users/14631339) | 5 | 8 |
| #3 | ::{ flag=ID }:: [Wishtynite](https://osu.ppy.sh/users/14217379) | 3 | **10** |
| #4 | ::{ flag=US }:: [TPColor](https://osu.ppy.sh/users/19102458) | 2 | 4 |
| #5 | ::{ flag=CL }:: [-Ryu-](https://osu.ppy.sh/users/8440939) | 2 | 2 |
| #6 | ::{ flag=JP }:: [Mi0117](https://osu.ppy.sh/users/15501680) | 1 | 2 |
| #7 | ::{ flag=HK }:: [Irone OSU](https://osu.ppy.sh/users/10678230) | 1 | 1 |
| #8 | ::{ flag=US }:: [netzoid](https://osu.ppy.sh/users/25673755) | 1 | 2 |
| #9 | ::{ flag=US }:: [Torru](https://osu.ppy.sh/users/18248035) | 1 | 1 |
| #10 | ::{ flag=ID }:: [Aphelion-](https://osu.ppy.sh/users/8370351) | 1 | 2 |

---

That's all for now! Stay tuned for another Featured Artist next week, plus a new batch of **Featured Artist playlists** around the end of the year!

—pishifat
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
---
layout: post
title: "osu! Indonesia Presents: Ascaveth Invitational Tournament 2023"
date: 2023-12-03 12:30:00 +0000
---

Join in the excitement as Indonesia's flagship LAN tournament kicks off for a second season next weekend on Saturday, December 9th!

![](/wiki/shared/news/2023-12-03-osu-indonesia-presents-ascaveth-invitational-tournament-2023/banner.png)

LAN tournaments are no stranger to the Indonesian osu! community. Way back in 2012, before osu! conventions were a staple, the old guards of the community had hosted the "[osu! Rhythmical Adventure Competition](https://osu.ppy.sh/community/forums/topics/98417)" — a vast osu! tournament held in the middle of a shopping mall which was among the first (if not the first) LAN event of its kind.

Now, more than a decade and [one successful small-scale iteration](/wiki/Tournaments/AIT/2022) later, osu! Indonesia is ready to present a spiritual successor to the event that rocked the world and [even peppy himself](http://web.facebook.com/osugame/photos/pb.100064751018669.-2207520000/10151075128588282/?type=3) eons ago — **Ascaveth Invitational Tournament 2023**!

## Tournament

Ascaveth Invitational Tournament 2023 is a double-elimination 1v1 osu! tournament hosted by ::{ flag=ID }:: [Ascaveth](https://osu.ppy.sh/users/3245206) and members of the Indonesian osu! community. The tournament features a lineup of eight top osu! players from across Indonesia, all of whom have qualified through the [Last Chance Qualifiers (LCQ)](/wiki/Tournaments/AIT/2023_LCQ) and other means as follows:

- ::{ flag=ID }:: [Hakui Koyori](https://osu.ppy.sh/users/10717635)
- ::{ flag=ID }:: [Skydiver](https://osu.ppy.sh/users/4750008)
- ::{ flag=ID }:: [lifeline](https://osu.ppy.sh/users/11367222)
- ::{ flag=ID }:: [rHO](https://osu.ppy.sh/users/1629553)
- ::{ flag=ID }:: [NazunaAmemiya](https://osu.ppy.sh/users/12159899)
- ::{ flag=ID }:: [Fuma](https://osu.ppy.sh/users/1501956)
- ::{ flag=ID }:: [ThatNOOBGuy](https://osu.ppy.sh/users/11091594)
- ::{ flag=ID }:: [DEETO](https://osu.ppy.sh/users/10069909)

The tournament is scheduled to commence on **Saturday, December 9th** on **01:00 UTC** (08:00 local time). Unfortunately however, due to logistical and some other concerns, the tournament isn't going to be open for public attendance. But fear not! As you might already expect, the entirety of the event will be streamed live over at **[the osuIndonesia Twitch channel](https://www.twitch.tv/osuIndonesia)** as well as **[lifeline's Twitch channel](https://www.twitch.tv/lifeline)**.

Check out the trailer for the tournament below:

<div align="center">
<iframe width="95%" style="aspect-ratio: 16 / 9;" src="https://www.youtube.com/embed/s99tyyzVGg4" frameborder="0" allowfullscreen></iframe>
</div>

## Merchandise

But wait, there's more!

If you're in Indonesia, you're also able to support the tournament by purchasing exclusive merchandise ranging from keychains and stickers to t-shirts — all starring the official mascot of the event, **[Stella Eirua](https://twitter.com/AscavethInv/status/1723545814449160621)**.

Check out the following short trailer for the merchandise line below and, if this strikes your fancy, you can place your order [here](https://docs.google.com/forms/d/e/1FAIpQLScmKN4kAXtiIluLchGfeodKpx37tcHd6OIe_6w1ZfLelDJWgA/viewform):

<div align="center">
<iframe width="95%" style="aspect-ratio: 64 / 27;" src="https://www.youtube.com/embed/3J8BuScGRSY" frameborder="0" allowfullscreen></iframe>
</div>

Do note that Ascaveth Invitational 2023 is fully run at a non-profit basis, and all proceedings will be used to fund the prize pool and other tournament needs.

See you there, and until then, feel free to follow [@AscavethInv](https://twitter.com/ascavethinv) on Twitter for updates on the tournament and beyond!

—Niva
Loading

0 comments on commit 3fcdd1a

Please sign in to comment.