Skip to content

amipilot v0.3

Choose a tag to compare

@sidick sidick released this 06 Aug 10:24
· 53 commits to main since this release
f6c9513

The wire and the host client: the same command set the ARexx port
speaks, now reachable from a host machine — no ARexx interpreter or
even a Workbench session on the Amiga side needed to drive it.

What's in 0.3:

  • The wire protocol: a length-prefixed line protocol over
    serial.device, with no JSON anywhere — requests are the exact same
    command grammar the ARexx port already parses, responses are
    RC <code> <byte-count> followed by exactly that many payload
    bytes, binary-safe with zero escaping. A VERSION handshake
    reports the server version, the protocol number, and which verbs
    are stable vs. experimental. See the
    Wire Protocol
    reference.
  • AmiPilotServer SERIAL: the commodity now optionally carries its
    whole verb set over serial.device (SERDEVICE/SERUNIT/BAUD to
    configure), alongside its existing ARexx port — the same dispatch
    serves both, so results are identical either way.
  • The host Python client (pip install -e host/ from the source
    tree): a transport-level WireClient, and Amipilot — the
    Pythonic object API (tree()/click()/type()/get_text()/
    manifest(), plus @name locator forms) that raises typed
    exceptions instead of requiring manual RC checks.
  • amipilot dump <window>: the host half of "the inspector" —
    connects and prints a window's gadget tree, either in the same
    format AmiInspect prints or as ready-to-paste # name = <id>
    suggestions for a quirk profile.
  • A pytest plugin: the amipilot fixture boots a configured
    Copperline (or real-hardware-adjacent) session and hands a test a
    connected client — session-scoped, and it skips cleanly rather
    than failing when no emulator config is set up. This delivers the
    phase's actual release gate: a host pytest test types into a
    field, reads it back, clicks a button, and asserts the window
    closed — driven entirely from the host, with Copperline booted by
    the test itself.

Known gaps, tracked as real follow-up work, not silently accepted:

  • TCP transport (for real hardware or an emulator with no serial
    bridge) is phase 0.4 scope, along with program launch, the file
    API, menus, and drag.
  • No wait/expectation primitives yet (click that waits for an
    expected change, timeouts) — a script still adds its own polling.
  • The wire connects host-to-Amiga only; the Amiga dialing out to a
    configured host (useful behind NAT) is a considered future
    addition, not yet built.
  • No public CI on-target run yet, same reason as 0.1/0.2:
    make test-target needs a machine-specific Workbench install CI
    doesn't have.

See the full changelog
for more detail.