Skip to content

Releases: TantiE100/pktctl

pktctl 0.2.2

Choose a tag to compare

@github-actions github-actions released this 28 Sep 04:04

Fixed

  • describe_ipc advertised an output schema without "type": "object" at its
    root, which MCP requires. Clients built on the MCP TypeScript SDK, such as
    mcp-proxy, rejected the whole tools/list because of it. The MCP E2E test
    now checks that every tool's input and output schema is an object.

pktctl 0.2.1

Choose a tag to compare

@github-actions github-actions released this 28 Sep 03:13

Added

  • Releases also publish ptmp, pktfile and pktctl to crates.io, through
    crates.io trusted publishing: no token is stored, and a crate already
    published at the version is skipped. Pull requests that touch the release
    machinery package and verify the three crates without uploading them.

pktctl 0.2.0

Choose a tag to compare

@github-actions github-actions released this 28 Sep 02:40

Added

  • Releases: a vX.Y.Z tag builds pktctl for macOS (Apple Silicon and Intel),
    Linux (x86_64 and ARM64) and Windows, attests each archive's provenance and
    publishes a GitHub release with SHA256SUMS and the CHANGELOG section as
    notes. cargo binstall pktctl finds those archives.

  • Without PKTCTL_ADDR, pktctl looks for Packet Tracer on ports 39000 to 39009
    and connects to the first one where the PTMP handshake with its credentials
    succeeds. Packet Tracer moves to 39001 when 39000 is still taken, for example
    right after a crash, and pktctl now follows it without a restart. status
    reports the address in addr.

Changed

  • The README is organized for new users: an introduction, installation in five
    steps with setup for Claude Code, Claude Desktop and Cursor, the tools grouped
    by task with example requests, configuration and troubleshooting. The full
    tool table moved to docs/tools.md.
  • pktctl has a logo: an icon and wordmark for light and dark backgrounds, a
    simplified icon for small sizes and a social preview image, in docs/assets.
  • The IPC index generator is a Rust crate, tools/ipc-index, and reads the
    class files out of the framework jar itself. It needs no JDK and no javap,
    and make check now compiles, lints and tests it with everything else.

Fixed

  • draw drew circles about 0.7 times the requested size, with the given centre
    as their top left corner, always with a black outline, and could shift both
    circles and lines with the view's scroll. These are faults in Packet Tracer's
    own drawCircle and drawLine, so draw now writes the shape into the
    network file and reopens a temporary copy: centres, radii and colours come out
    exact. It also draws rectangles and takes a fill colour; width is gone,
    since Packet Tracer stores no line width. list_drawings lists rectangles too.
  • call_ipc refuses LogicalWorkspace.get{Ellipse,Rect,Line,Polygon}ItemData,
    which crash Packet Tracer 9.0.1.
  • A PTMP session kept its socket open forever once Packet Tracer went away: the
    writer task waited on its queue and never released its half of the
    connection. Besides leaking a descriptor per lost connection, the half-closed
    sockets held port 39000 after a Packet Tracer crash, which is what pushed the
    restarted Packet Tracer to 39001. The writer now stops when the session closes.
  • save_network checks that the target folder exists before saving. A missing
    folder made Packet Tracer show a dialog that blocked every IPC call until
    someone clicked OK.
  • A method taking a generic argument was recorded as taking two: the old
    generator split the printed Java types on every comma, so
    OSPFAreaNetwork.setIpAndMask(Pair<IPAddress,IPAddress>) came out with two
    parameters and a parameter named Pair<IPAddress.
  • Seven tools could return structured content their own outputSchema
    rejected, so clients that validate it (Claude Code among them) turned a
    successful call into an error: list_ports, configure_ios, list_models,
    list_simulation_events, add_module, remove_module and
    remove_location left out fields the schema marked as required whenever they
    were empty. Those fields are optional in the schema now, and the MCP E2E
    client checks every tool result against its outputSchema.