Skip to content

Romule 0.4.0

Latest

Choose a tag to compare

@Devstored Devstored released this 10 Sep 13:36
· 21 commits to main since this release

The release where first start stopped being a trap, and the wizard learned to
listen. The full detail — every entry with its why — is in
CHANGELOG.md.

First start, redone

  • Trust on first use, the model Jellyfin and the *arr suite use: an
    unclaimed installation opens on its wizard, and creating the first account
    claims it. The bootstrap token is gone — under Docker it made the first
    account impossible to create.
  • A mandatory access step: open on the local network (said out loud, in the
    terminal too, at every start) or protected by accounts/SSO. romule access open|close flips it from the terminal when the interface is out of reach.
  • Two-factor sign-in with a QR code — encoder written in stdlib, verified by
    its own decoder against the published reference vector.

The console, at last

  • Pairing works from a container. The connection is checked rather than
    taken on adb's word (adb connect exits 0 on links that sit offline), a
    flat refusal right after pairing is retried once, the paired address itself
    is tried first, and the connection port is swept for outward from the
    pairing port when everything faster failed.
  • The wizard asks how the console is linked — cable or Wi-Fi — and shows that
    path alone; once connected it shows the console's own answers: name,
    battery, Android version. Adding a console opens the same connect dialog on
    a blank entry, and the console names itself on first contact.
  • The ROMs root is found, by folder names (aliases included: PS1,
    Sega) and by contents when names say nothing — which is why every platform
    now shows its game count.

Interface

  • Folder navigation is one reusable modal; platform cards carry tinted
    silhouettes; provider settings hide until their provider is chosen; an
    « À propos » tab with version, release notes, source and tools.
  • The update pill can be dismissed, server-side, until the next version.
  • ~370 sentences moved into named, accented constants; the terminal speaks
    English (ROMULE_LANG=fr opts into French) and no longer mixes languages
    mid-stream.

Nets that now bite

Every defect above got a checker or a test proven to fail without its fix:
routes vs methods, duplicate DOM ids, sentences split by emphasis, sentences
hidden in ternaries, config keys vs docs vs README counts, and a port sweep
tested with 1100 file descriptors open — the condition that had silently
disabled it.

Upgrade: docker compose pull && docker compose up -d. Configurations
from 0.3.x are read as they are; going back keeps your pairing.