Skip to content

TestPion 0.53.0

Choose a tag to compare

@github-actions github-actions released this 19 Oct 06:24
· 187 commits to main since this release

A review release: safer saves and downloads, one row and one badge in every list, tabs that always close and never show a cut-off name, one generic delete with Undo that the command line and MCP can use too, and faster trees. Every item below is something you can see or use.

  • The logo in the top bar sits on the bar's own background: white on the light theme (the wordmark has a dark "Pion" there), unchanged on the dark theme. It no longer sits on a navy badge.

  • Expand all and Collapse all are one toggle button, the same in the JSON tree and the explorer: it offers one, then the other after each press (the right-click menus keep both as items).

  • The same row in every list: collections, environments, AI providers, History entries and the Tests view's runs are now the one row the other trees use. Shift+F10 and the menu key open the menu, F2 renames, Delete deletes (with Undo), * expands, Enter opens, arrows, Home/End and typing a name move between rows. The runs list had no keyboard at all before.

  • The keyboard stays where you were: after deleting a row (key or menu) the focus moves to the next row, and Undo puts it on the restored row.

  • One badge everywhere: HTTP methods, protocols and file types (GET, GQL, gRPC, WS, MCP, AI, API, CSV …) are the same pill of the same width in the explorer, the Tests tree, History, the Runner and the Home view, in one colour per protocol that follows the light and dark themes.

  • Screen readers hear the trees as trees: each row is an item with its level, whether it is open and whether it is selected.

  • One delete message: "Deleted the (kind) “name”" with the same Recently deleted note wherever the item went there (collections, environments, API definitions, datasets, MCP servers).

  • Row tooltips show the full name only when the name is cut; test files rename in place (F2, Rename); the New folder… item has its ellipsis everywhere.

  • Empty states: the Tests view with no test files shows an icon, and the runs list says "No runs yet" (and "No runs match", with Clear filter) with a next step.

  • Faster: typing in a test file no longer redraws the test file tree (a thousand files draw only the rows on screen), the Collections filter works each name out once per keystroke, Expand all writes the saved tree state once, and the explorer reloads only the list a change touched.

  • Every click on a request in the explorer opens it in a tab of its own and shows it (it no longer replaces the tab you had); a request that is already open is just shown.

  • Closing the last tab of Evaluations, Load tests, the AI Playground or Environments now closes it: the view says nothing is open and offers a button for a new one, as the request editors do.

  • A request you sent keeps its tab and its response until you close the tab: a single click on another request opens a new tab instead of replacing it (a preview tab is still replaced while nothing was sent from it). The same for a prompt run in the Playground.

Download and export: safer, and no slower for big outputs

  • Open after a save is for documents only: a raw body, an HTML page, a shell script, or any file whose name ends in something the OS would run (.exe, .cmd, .js, .lnk …) is shown in its folder instead; the toast offers Open only when it applies.
  • A server's download name never runs on a double-click: a Content-Disposition name with a launcher extension gets the Content-Type's extension appended (report.cmd saves as report.cmd.txt, setup.exe as setup.exe.bin).
  • Deeply nested JSON lays out in bounded space: the indent stops growing past 64 levels and the layout stops past 512; a body that would still grow past 8× its size stops the save with a message (save it as Raw body instead) rather than fill the disk.
  • A link inside the workspace cannot carry a read or write outside it: paths are checked by where they really lead, a payload is read only when it is a plain file under payloads/ (a response body, History compare), and a source is accepted only for the output it belongs to (the console's lines cannot be saved under the timeline's no-redaction policy).
  • Workspace export reads datasets field by field: a CSV column named password, a JSON, JSON Lines or YAML property holding a secret becomes a {{variable}} and is listed; files no scan can read (binary, a dataset that does not parse) are named in the summary as exported as is.
  • Importing a workspace export never replays the file's own notes; what the import skipped is said in TestPion's words. Objects in an export or an Insomnia import cannot set a prototype through a __proto__ key.
  • Big saves stream end to end: a data run or evaluation matrix as JSON, HTML or Markdown is written page by page like CSV, a run's ZIP entry by entry, and reports recorded masked are no longer parsed and masked a second time.

Menus

  • Key hints in every row menu: Open Enter, Rename F2, Delete… Del, Expand all * are shown beside the items that the keys run (the menu itself opens with Shift+F10); the docs' menu table shows them too.

For AI agents and scripts

  • testpion item delete <ref> / item restore <id> (--json), the MCP tools delete_item / restore_item and the RPC item.remove / item.restore: one delete-to-Recently-deleted and restore for every kind with the trash capability (collections, environments, datasets, API definitions, MCP servers), by ref (environment:staging, spec:specs/x.yaml, a testpion://open link, {kind, …ids}); the app's own Delete… with Undo goes through the same function. A kind without it answers with the reason.
  • testpion kinds --json / list_kinds / kinds.list add nodes: the menu of every row a kind has in the app (its row, section header and folders), group by group, with each action's id, label key and key.
  • A delete-for-good dialog starts on Cancel: Enter no longer confirms "Delete for good" (Recently deleted), "Delete the folder" or a git branch delete; press the button, or Tab to it. Question dialogs still answer Enter with their primary button.
  • Tab strips never show a cut-off tab: in a pane too narrow for every tab (the request editor side by side with the response, compact density), a tab only partly in view is hidden and counted by the strip's overflow button; the request editor's strip and the document strips (open requests, test files, monitors) share one overflow control, with the active tab ticked.
  • One tooltip style: why an output's Copy / Download is off, and the ⓘ hint of an output bar (the Problems panel's F8 / Shift+F8 keys, which were plain text clipped in a narrow pane), are the same tooltip as every button's.
  • Kind colours are tokens: the GraphQL, gRPC, WebSocket, API definition and dataset badges in tabs, the runner and the Debugger use the kind's colour token, the same in both themes.
  • The output control (Copy / Download / ▾) does less work on every render: its menu and the format it remembers are kept between renders (the console re-renders on every event).

Downloads

See the download page for which file to choose and the installation guides.

The installers aren't code-signed yet: Windows SmartScreen and macOS Gatekeeper ask you to confirm the first launch.