Everything from July





New11
Public render gallery
At /gallery, with keycount filters from 1K to 10K, sorting by views and a link of its own for every render. What gets watched stays: a render with an audience is not dropped by retention.
Community HUD gallery
At /gallery/huds. Designs are submitted from the editor and get published once reviewed, showing the same preview the editor does.
Discord bot
/rendertakes your .osr file, an osu! link, or neither: with no arguments it lists your own plays so you can pick one. You can set quality, shape, preset, skin and scrolling. There is also/renders,/gallery,/status,/linkand/plus. It works the same inside a server or in a private message, and you add it from the Discord icon in the header.Result screen editor
The HUD editor now also builds the screen at the end of the video: you see what will come out, everything is selectable, and the images make it into the render.
Render without hunting for the file
Paste an osu! play link and Miru downloads the replay, or pick straight from your recent plays with the button to the right of “Replay”.
9:16 vertical render
For posting where video is watched upright, with no manual cropping. The preset carries it to the Auto Renderer too.
Your renders play where you paste them
Drop a Miru link into a Discord chat and the video plays right there, with no click-through and no download. Twitter, Notion and WordPress unfurl it with title, description and thumbnail instead of a bare URL. And
/watch/[id]/embedserves the player to drop into a page of your own.Public API v1
Your own keys, webhooks and an OpenAPI spec, documented at /docs/api.
You can try it without an account
One guest render to see the result before signing up, plus OAuth sign-in and a yearly plan.
/bug and /suggestion on the Discord bot
They open a form inside Discord and take a screenshot, a log or an .osr. They land in the same place as the form on the site, so they get read and answered the same way.
Volume control on the Discord bot
/rendertakesmusicandhitsound, from 0 to 100, same as the site. Setting music to 0 leaves just the hitsounds.
Improved5
The HUD editor opens without Plus
Building your HUD, trying it and saving it is free: the whole editor is open. What is still Plus is getting that advanced design into the video; without Plus the render uses the basic HUD, and the notice says so before it starts.
Shared links show something
Open Graph, robots and sitemap: pasting a Miru link anywhere leaves a title, a description and a thumbnail.
Scroll direction is picked on the web
It used to live in the desktop client only; now it sits where the render is configured.
Rendering without an account no longer has a cap
It used to stop after the first render and ask you to sign up. An account is worth having for what it adds — presets, skins, history and the gallery — not for shutting the door on someone who just wants one video.
Searching your plays actually finds them
Words can sit in different fields and in any order, accents stop mattering, and you can search by mods or keycount. If what you want is not in your recent plays, it looks through your best ones instead of saying it does not exist.
Fixed7
Render progress got stuck at 2%
The bar jumped from “validating 2%” straight to done. The worker read the percentage off a bar that is only drawn when the output is a terminal, and renders run with the output piped, so there was nothing to read.
The queue got stuck
A job that died kept its slot taken and nothing else got in.
The HUD editor keymode
The editor showed a column count that was not the map's.
Skin uploads
Valid files were rejected, and the error arrived late and without saying what happened.
Saving with no preset lost the work
With no preset around, saving creates one instead of doing nothing.
An old score id pulled someone else's score
osu!'s legacy identifiers and the current ones live in different spaces, and both were being resolved against the same one.
Shared links play inside Discord again
The video link Discord read was signed and expired after six hours, so the player ended up pointing at a dead address. It is a stable address now, and it does not expire.
