Skip to content

Bundled Postman-like HTTP client extension #147

Description

@JDonaghy

Tracking issue. Not a current priority. Depends on #146 — plugin API extension.

What

A bundled Lua extension for vimcode that provides HTTP request building and response viewing — equivalent to VSCode's "REST Client" or "Thunder Client" extensions. Lives in `src/core/extensions/` alongside the other bundled extensions.

Features

MVP:

  • Collections/folders tree (`TreeView`) — reusable request definitions
  • Request builder (`Form`) — URL, method dropdown, headers table, query params table, body editor (`TextEditor` with JSON/XML syntax)
  • Send button + async HTTP
  • Response viewer — pretty-printed JSON/XML (`TextDisplay`), headers list, status + timing + size
  • Request history (`ListView`)
  • Basic environment support (variable substitution in URL/headers/body)

Stretch:

  • Environments switcher (`Palette`)
  • Pre/post-request Lua hooks for auth signatures, assertions, token refresh
  • Import from Postman collection JSON
  • Export as cURL
  • WebSocket support
  • gRPC support (pipe-dream)

Why this, why now, why not now

  • Why this: Validates that plugin-authored rich-UI extensions work on quadraui. Proves vimcode can host a real productivity app as a plugin (not just annotations).
  • Why not now: Depends on #TBD (plugin API surface). Building this before that API stabilizes would mean throwing it away.
  • Why track it: So the plugin API design is informed by a concrete consumer, even if we don't build it for a year.

Non-goals

  • No JS scripting (unlike Postman). Pre/post-request hooks use Lua via vimcode's existing mlua runtime.
  • No cloud sync / team workspaces (local files only; users can check collections into git)
  • No visualizers beyond what quadraui `TextDisplay` supports (pretty JSON / XML / images). No custom HTML renderers.

Dependencies

  1. Extend Lua plugin API to expose quadraui primitives #146 — Plugin API extension (blocking)
  2. `vimcode.http` async HTTP API in vimcode (listed under #TBD but logically a separate piece of work)
  3. quadraui primitives available: `Form`, `TreeView`, `TextEditor`, `TextDisplay`, `ListView`, `Palette`, `Dialog`

Priority

Low. Re-evaluate when:

  • quadraui 1.0 is published
  • Plugin API extension (#TBD) is done
  • There's user demand or competing extensions for vimcode

References

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions