v3.1.0
This release moves every long-running media operation into a background job system,
adds batch processing so one operation can run over many files at once, and makes the
GPU Docker images much smaller. As a v3.x release (see the v0.1.0 note above) it
includes a few breaking changes, listed first
Breaking Changes
-
REST API→ the old one-shot endpoints for transcription, subtitle
generation, conversion, and subtitle cleanup were removed. These operations now run
through the background job system instead -
REST API→ word breakdowns and sentence explanations are now sent as a live
stream while they are generated, rather than as a single response at the end -
CLI→ themirumoji servercommand moved into a new development-only group
and is nowmirumoji dev server -
Database→ the database format changed and is not upgraded automatically
from3.0.0. Reset it when upgrading by runningmirumoji down -v(this clears
local data, in keeping with the pre-1.0 note above)
Added
-
Server→ long operations (transcription, subtitle generation, conversion,
and LLM subtitle cleanup) now run in the background. A file is uploaded once, and
any number of operations can then run on it without uploading it again -
Server→ batch processing runs one operation across many files at once and
tracks each file on its own. On the Modal backend the files are processed in
parallel -
Frontend→ a task tray keeps your running and finished jobs visible as you
move around the app, and loads each result back in when it is done -
Frontend→ newFilesandTaskssections on the dashboard let you upload
files or a whole folder, select several and run them as a batch, browse the full
job history, and open each result -
Frontend→ when setting up an LLM, you can now pick the model from a
searchable list of your provider's models instead of typing its exact name -
Frontend→ video conversion now has a quality preset (Performance,
Balanced, orQuality) alongside the resolution and bitrate options, so you can
trade encode speed for output quality -
CLI→mirumoji dev upbuilds and runs the app from a local source
checkout, for testing the Docker setup during development
Changed
-
Frontend→ running an operation in the player no longer freezes the toolbar.
It is handed to the task tray, which loads the result back in when it finishes. The
video player was also reworked into a shared component that clip previews reuse -
Frontend→ a phone held sideways now uses the mobile layout, since the
desktop layout only starts at tablet width -
Launcher→ the launcher's logs and the Docker download progress are tidier
and easier to follow, in both the CLI and the desktop app -
Docker Images→ the GPU images are smaller. PyTorch was removed because
transcription does not need it, and the speech model now downloads on first use into a
persistent cache instead of being baked into the local GPU images -
Server→ video conversion is faster and leaner. On the GPU the whole decode,
scale, and encode pipeline now stays on the GPU instead of copying frames back and
forth, and the GPU and Modal images ship a newer FFmpeg build to support it.
Conversion also picks the encoder from what the GPU can actually do, so machines whose
GPU cannot encode (and CPU-only setups) go straight to a fast CPU encode. Converted
videos keep their original aspect ratio now rather than being padded with black bars
Fixed
-
Frontend→ the player now handles video formats your browser cannot play
(such as.mkvon iOS) by offering to convert them to MP4 instead of showing a
broken player. Loading a different video also resets the saved position so it never
starts past the end of a shorter one -
Frontend→ the navigation menu scrolls on short screens (such as a phone
held sideways) so every item stays reachable, and long entries on theHomepage
no longer stretch the layout out of shape -
Server→ saving a clip no longer fails for clips with long Japanese text,
and saved clips now use a server-generated filename that closes a security issue
where a crafted upload name could write outside its folder -
Server→ deleting a file also removes the jobs that used it (and is blocked
while one of those jobs is still running), cancelling or deleting a running job no
longer leaves the job list in a broken state, and a failed job now shows a clear
reason -
Server→ converting a video on a cloud GPU that has no video encoder (such as
anA100,H100, orB200) no longer wastes time on a failed hardware-encode
attempt before falling back, which had made GPU conversion slower than plain CPU -
CLI→mirumoji logs -fno longer crashes when you press Ctrl+C, and
re-runningmirumoji upno longer contacts Docker Hub when the images are already
downloaded