Skip to content

Releases: Hecatoncheir/lazyrest

v0.30.1

Choose a tag to compare

@github-actions github-actions released this 14 Sep 07:38

Changed

  • The most tangled functions are split into named steps: reading a key press, watching for file changes, the footer hints, the directory scan, the startup sequence, and reading a document. The highest cognitive complexity in the tree fell from 94 to 24.
  • gocognit holds a function under a cognitive complexity of 25, so nothing grows back past what can be held in your head at once. Test files are exempt, where a table is long by design.
  • The bundled run skill has recipes for driving the stream pane over MQTT and a WebSocket, alongside the raw socket it already covered.

No behaviour changed. The binaries differ only in how the source is arranged, so there is nothing to gain by upgrading.

v0.30.0

Choose a tag to compare

@github-actions github-actions released this 14 Sep 07:11

Added

  • MQTT 5 requests run from .http files, addressed by an mqtt:// URL. Headers describe the session: Subscribe repeats for every topic filter to watch, Topic names where a composed frame is published, and a quality of service rides along as a header parameter (sensors/#; qos=1). mqtt.http is an example.
  • A stream frame carries what the protocol says about it beyond its bytes. The pane shows a message's topic and quality of service before its payload, because a payload without the topic it arrived on hides the part that matters most. Secrets are redacted there too, since a topic is built from the same variables a body is.
  • mqtts:// connects to a broker over TLS and defaults to port 8883. A certificate the session cannot verify stops it unless --insecure was given, the same flag the rest of the session obeys.
  • A quality of service is shown only when it is not the default. Zero is what a broker assumes, and six characters saying nothing pushed the payload onto a line of its own.
  • Connecting and subscribing appear in the log as events of their own, so a session that never gets past its handshake says so.

v0.29.0

Choose a tag to compare

@github-actions github-actions released this 14 Sep 06:10

Added

  • stomp.socket and a Web-STOMP request in streams.http show how to reach a STOMP broker over each transport. A frame is written across real lines, because a file keeps them; only the terminator needs \0.
  • A stream body and the frame composer expand \0, so a frame can end on the null byte STOMP requires. This makes RabbitMQ reachable over its STOMP plugin, and over Web-STOMP as a ws:// request, alongside any other STOMP broker. A WebSocket expands only \0: JSON has no \0 escape of its own, while \n inside a JSON string must stay two characters.

Fixed

  • A request list row shows a stream frame's command rather than its whole frame squashed onto one line. The request pane already showed the frame properly, a line at a time.
  • A frame carrying a null byte is shown as text with a visible \0 rather than dropping the whole frame into hex, which made a text protocol unreadable.
  • An overlay that is a text field receives what is typed. A global binding on a printable key used to win over the field, so q closed the overlay and : opened the command palette; neither a STOMP header nor a path holding those characters could be entered. Esc still cancels and Ctrl+C still quits.

v0.28.1

Choose a tag to compare

@github-actions github-actions released this 14 Sep 05:30

Changed

  • The bundled run skill documents how to type into the frame composer. A whole string sent at once outruns the field taking focus, and the frame goes out truncated while still looking like a frame.

No application code changed since v0.28.0. The binaries differ only in the stamped version, so there is nothing to gain by upgrading.

v0.28.0

Choose a tag to compare

@github-actions github-actions released this 14 Sep 05:10

Added

  • The frame composer remembers what has been sent. Up and Down walk back through earlier frames and return to the draft, so a subscription can be resent after a reconnect without retyping it. The history is bounded, drops consecutive repeats, keeps what was typed rather than what went on the wire, and is never written to disk.

Changed

  • The fuzz smoke run in CI lasts ten seconds per target rather than two. The deadline used to arrive while a target was still gathering baseline coverage, which failed the run with context deadline exceeded and blocked a release.
  • The file watcher debounce window is a variable so its test can widen it. The test writes a burst and expects one report, which depends on the burst landing inside one window; the production window cannot guarantee that on a loaded machine.

v0.27.1

Choose a tag to compare

@github-actions github-actions released this 14 Sep 04:20

Fixed

  • The frame composer leaves the screen once the frame is sent, instead of staying drawn over the log.
  • A frame occupies exactly one row in the log. A payload ending in CRLF used to add a blank row, so the rows no longer matched the frames.
  • A .socket body expands \r, \n, and \t. The parser trims the trailing newline off a body, so a file could not otherwise end a message the way a line oriented protocol requires; the bundled Redis example depended on it.

v0.27.0

Choose a tag to compare

@github-actions github-actions released this 14 Sep 03:39

Added

  • WebSocket requests run from .http files, addressed by a ws:// or wss:// URL, and carry the headers and session cookies of the requests around them.
  • Raw TCP requests run from a new .socket file. A socket carries no message boundary, so a burst is joined into one frame and a pause ends it.
  • A live pane replaces the response while a stream is open: frames appear with direction, kind, size, and time; JSON is highlighted, unprintable payloads are shown as hex, and secrets are redacted. f follows or pauses, c clears without hanging up, and Esc closes the connection.
  • The body of a stream request is sent as its opening message on connecting, which is where a subscription belongs.
  • Frames are sent from the pane with s. A raw socket expands \r, \n, and \t, which a line oriented protocol needs and an input field cannot hold; a WebSocket message is sent exactly as typed, so JSON keeps its own escapes.
  • The frame log is bounded by both count and size, and reports how many earlier frames it discarded rather than pretending to be complete.

Fixed

  • The footer no longer offers help twice when no pane holds focus.
  • Focus moves into and out of the stream pane, instead of navigating to the response view that the stream had replaced.
  • The stream pane follows a theme, language, or keybinding change like every other pane.
  • Picking a history entry while a stream is open brings the response pane back and closes the connection, instead of drawing the entry off screen behind a live socket.

v0.26.1

Choose a tag to compare

@github-actions github-actions released this 14 Sep 01:38

Changed

  • CI discovers its fuzz targets with go test -list instead of two hand-written lists, so a target added to the tree can no longer go unfuzzed, and a discovery that finds nothing fails the run instead of passing empty.
  • Contributor documentation now records the full set of CI gates, how the terminal UI is wired, and how the terminal tests work; the everyday command list lives in AGENTS.md alone.

No application code changed since v0.26.0. The binaries differ only in the stamped version, so there is nothing to gain by upgrading.

v0.26.0

Choose a tag to compare

@github-actions github-actions released this 13 Sep 01:38

Added

  • Request files are watched recursively and refreshed automatically after debounced writes, creates, renames, and removals.
  • Hurl runs now render the selected exchange's HTTP status, headers, protocol, body, and assertion failures instead of exposing only the raw JSON report.
  • Theme selections from the command palette are saved to the owning configuration layer and restored on the next launch.

Fixed

  • Truncated responses now keep the complete declared size separately from the bytes retained for display and history; chunked responses report a lower bound when their full size is unknowable.

v0.25.0

Choose a tag to compare

@github-actions github-actions released this 12 Sep 22:59

Changed

  • Empty History and Captured responses windows now explain how to populate them and hide the unavailable clear action.
  • Help and Diagnostics overlays now expose their toggle shortcuts in the contextual footer hints.
  • Theme, Environment, and Save Response overlays now expose their primary Enter action in the contextual footer hints.
  • Save Response now switches its footer hints to confirm/cancel when an existing file needs overwrite confirmation.
  • Files and Suites search titles now show the current match and total, such as [2/7].
  • Added responsive screenshot regression coverage for 60, 80, 120, and 160-column terminals.
  • Added a first-run footer hint for Help and the command palette until the first request starts.