Skip to content

v3.7.0

Choose a tag to compare

@svdC1 svdC1 released this 20 Jul 17:36
· 10 commits to main since this release

This release stops a local video being uploaded once per player action,
makes the interface report what actually happened instead of assuming success,
and fixes two GUI Modal actions that opened a second window and hung forever.
It also adds upload cancellation, double-tap seeking, a Modal log source in
the GUI, and quiets a large amount of misleading ERROR noise in the host logs.
It has no breaking changes

Added

  • Frontend → An in-flight upload can be cancelled from the task tray, which
    stops the transfer and drops the row rather than leaving it to finish

  • Frontend → Double-tapping the left or right side of the player skips 5
    seconds, matching the arrow keys

  • Launcher → The GUI Logs panel reads the Modal-hosted app's logs as
    well as the local Docker Compose stack, chosen with a new Source control,
    with the same tail and follow controls

Fixed

  • Frontend → Running two player actions on the same device video uploaded
    the whole file twice. Clicking Generate SRT and To MP4 on one video sent it
    in full on each action and left two profile files sharing a name. An action
    started while an upload is still running now joins that upload instead of
    beginning its own

  • Frontend → A player action on a file that had since been deleted reported
    success while the server rejected it, and no task ever appeared. Actions now
    wait for the result and report the real outcome, naming a deleted file rather
    than failing silently

  • Frontend → A profile video deleted while it was loaded showed the
    Convert To Play prompt, which could never succeed. A deleted file is now told
    apart from a container the browser cannot decode, and clears the player

  • Frontend → Deleting a file left the jobs it removed on the tasks
    dashboard, where deleting them failed with a not-found error that could not be
    cleared. Those jobs are dropped as the file is deleted, and any task that is
    already gone server-side clears instead of erroring. Transcripts and clips are
    refreshed the same way

  • Frontend → On iOS a recording's audio slider never moved and its length
    showed as 0:00, because a browser recording carries no duration until it has
    been read in full. The duration is now picked up when it becomes known

  • Frontend → On iOS the file dialog stopped responding after a few
    uploads. Picking the same file twice raised no event, and each preview held its
    audio in memory for the rest of the session, so repeated picks exhausted the
    browser. File inputs now reset between picks and previews are released once
    nothing shows them

  • LauncherDown and Download Data in the GUI's Modal Host panel
    opened a second application window and hung indefinitely. The packaged app
    embeds Python, so the modal CLI could not be run the way those two actions
    ran it. Download Data now streams the volume directly and Down stops the app
    in-process, so neither spawns anything

  • Launcher → The Modal Host panel's mode pills kept whatever was true
    when the panel first opened, so a change made in Settings was not reflected on
    returning to it. They are re-read on every visit, as the Dashboard already did

  • CLImirumoji modal logs --tail accepted counts the modal CLI
    rejects, surfacing its raw usage text. It is bounded to the accepted range, also
    takes -t, and states that it does not apply with --follow

  • Server → Video conversions, saved clips and Anki exports were mirrored
    to the Modal volume repeatedly while they were still being written, re-copying
    the same output several times over. Each is now written aside and moved into
    place when finished, so it is copied once

  • Server → Ordinary outcomes were logged as failures. A stale reference
    from the interface produced a database ERROR and a full traceback on every
    attempt, burying real problems. Only genuine failures are logged that way now

  • Server → Deleting a task that was already gone failed instead of
    succeeding, which left the interface unable to clear it. Deleting a task that no
    longer exists now succeeds

  • Server → A cancelled upload was recorded as a server failure rather than
    as the deliberate action it is