Repository navigation
Releases
deed v0.2.2
Deed v0.2.0
New protocols & auth
- 🧼 SOAP client (1.1 & 1.2) — full-envelope editing, correct SOAPAction/Content-Type per version, XML syntax highlight + pretty-print
- 🔑 OAuth2 auth type — client_credentials & password grants; token fetched, cached and refreshed automatically (HTTP / GraphQL / WS / SOAP)
- 🔎 GraphQL introspection — new Schema tab renders the server schema as SDL (toggle to raw JSON)
- 🧬 Kafka Avro — produce & auto-decode values via Confluent Schema Registry
Improvements
- Auth tab simplified to one flat shape with a single
typekey;apikeyremoved (use Headers/Query) — old files migrate automatically - gRPC: Auth tab removed (auth = metadata), new requests seeded with example metadata lines
- XML responses highlighted & prettified across all request types
Fixes
- Crash rendering non-UTF-8 bytes in streamed/Kafka values
- Kafka: session deadline covers connect+tail, Cancel responsive ~100 ms, Producer/Consumer draft survives restart
Full Changelog: v0.2.1...v0.2.2
deed v0.2.0
⚠️ Auth simplified — one flat JSON shape with single type key (3 types: none/basic/bearer), apikey removed, automatic migration + guidance to move keys into Headers/Query, new cURL import behavior (unknown scheme stays in headers list).- ✨ gRPC — Auth tab dropped, new requests seeded with disabled example metadata lines, lowercase key rule.
- 🐛 Kafka — one session deadline bounds connect + tail, Cancel responsive within ~100 ms, inactive Producer/Consumer draft survives autosave/restart.
- 🔧 Internal — refactor/perf pass, new transparent app icon.
- 📚 Docs — README + file-format spec updates.
- Install footer keeps house format (deed-v0.2.0-macos-arm64.zip + quarantine instructions).
Full Changelog: v0.1.4...v0.2.0
deed v0.1.4
✨ Kafka support (new request type)
Deed now speaks Kafka — pick Kafka in the request-type dropdown:
- Producer — compose key / JSON value / headers, send one message, get a delivery report (topic / partition / offset / latency). Supports
acks, compression, idempotence,tombstone(null value for compacted topics), and raw librdkafka properties viaextra. - Consumer — tail one or more topics live in the response pane.
offsetReset: "earliest"+ emptygroupreads a topic from the beginning;maxMessagesstops after N records. - Cancel works even against an unreachable broker (delivery wait is sliced, honoring both the Kafka
messageTimeoutMsand the request timeout).
See the new README Kafka guide for the tab schemas.
🔧 Configuration now flows from .env
- New-request defaults (
DEFAULT_TIMEOUT_MS,VERIFY_TLS) and gRPC stream ceilings (STREAM_MAX_EVENTS,STREAM_MAX_BYTES_MB) are read from.envinstead of being hardcoded. - New key:
WS_CONNECT_TIMEOUT_MS(WebSocket handshake timeout). - Removed dead keys (
STREAM_COALESCE_MS,STREAM_UI_BUFFER_MAX_KB,SCROLLER_OVERLAY,TREE_ACTIONS_H, …) and fixed theWINDOW_MIN_WIDTHtypo. - Reminder:
.envis embedded at build time — edit + rebuild to change.
🐛 Fixes
- Long-lived streams (WebSocket / gRPC streaming / Kafka consumer) run on a dedicated thread pool — they no longer block queued normal sends.
- Body drafts are kept per request: switching body mode or requests no longer copies the wrong body / loses what you typed in a non-active mode.
- Environment editor & code-convention cleanups.
📚 Docs
- README rewritten as a user guide: what happens on Send, plus per-type instructions (HTTP body modes, gRPC reflection/.proto & streaming, WebSocket sessions, GraphQL subscriptions, Kafka producer/consumer).
🏗 Internal
- Core restructured into a clean
domain / app / infratree with an automated layering gate in the test suite; legacy layer removed, importer/exporter separated. No user-facing change — groundwork for what's next.
Install — download deed-v0.1.4-macos-arm64.zip, unzip into /Applications. The app is ad-hoc signed, so on first launch: right-click → Open → Open (or xattr -dr com.apple.quarantine /Applications/deed.app).
Full Changelog: v0.1.3...v0.1.4
deed v0.1.3
Deed v0.1.3
A reliability + UX release: per-request configuration, a leaner build, and big stability fixes for streaming, caching, and window/teardown.
✨ New
- Per-request Config tab — every request now has a Config tab (sits right before the cURL button) with two settings:
timeout_ms— request timeout / gRPC deadline / WebSocket idle timeouttls— verify TLS cert (HTTP/WS/GraphQL) or use a TLS channel (gRPC)
Settings are saved per request and applied across all transports.
- Pixel-rounded window corners — new
SQUARE_CORNERS=2mode draws retro, non-anti-aliased (chunky) rounded corners. Tune withCORNER_RADIUS_PX(corner size) andCORNER_STEP_PX(stair size).0= system rounded,1= square (default),2= pixel-rounded.
🔧 Changes
- Environments are now all equal — removed the special "Global/Local" base environment. Every environment is a normal column you can rename and delete; an environment's name is simply its filename. Variables resolve from the selected environment only (pick one from the ENV dropdown).
- gRPC TLS moved from the toolbar toggle into the per-request Config tab (
tls). The old toggle is gone; the globaldefault_timeout_mssetting was removed in favor of per-requesttimeout_ms. - Default window width increased
1040 → 1280. - Left (request) pane now defaults to half the width of the right (response) pane (1:2).
- GraphQL "Variables" tab renamed to "Vars".
🐛 Reliability & fixes
- Streaming responses (SSE / gRPC-stream / WebSocket) survive an app restart — the disk-cache index is now written through on every store and flushed on quit, so a cached stream response is no longer lost when you close and reopen the app.
- Two-tier cache hardening — accurate RAM accounting (no longer silently exceeds the cap), durable index writes, and removal of stale/orphaned cache files; cache filename is now just the request id.
- No more use-after-free on close — closing a window/tab while a request or stream is in flight is now safe; streams/sessions run on dedicated threads and are cancelled + drained cleanly on shutdown.
- Robustness — depth-guarded JSON parsing (no stack-overflow crash on hostile/huge input), atomic+fsync file writes (no data loss on crash), and gRPC reflection teardown that can't hang.
- Cache size now always comes from your app settings, clamped by the
.envceiling (raised so your setting isn't overridden).
🏗️ Build & internals
- Simplified Makefile — just four commands:
make help,make setup,make build(→ signeddist/deed.app),make test. - Lighter repo via CMake FetchContent — Scintilla/Lexilla editor sources are no longer vendored in git; CMake downloads the pinned versions (SHA-256 verified) into
build/_depsand applies local patches automatically at configure time. - Warning-free build —
make buildproduces zero compiler warnings (including fixes for macOS 12 deprecations in the vendored editor). - Core split into smaller headers/translation units; transport dispatch stays registry-based.
Full Changelog: v0.1.2...v0.1.3
deed v0.1.2
Highlights
New core service support streaming response. Support new request type like SSE, Websocket, GraphQL, gRPC Streaming
Features
- Streaming feature: new core feature to support streaming response
- New type request support: graphql, sse, ws
Bug Fixes
- UI Overflow line number: fix line number in pane response overborder when it too long
Refactoring & Performance
- Caching: Caching core service
Breaking Changes
- Global config: remove timeout, tls config move it into per request
Chores
- refactoring code, plattern logic
.gitignorefile update
Full Changelog: v0.1.1...v0.1.2
deed v0.1.1
Full Changelog: https://github.com/thep200/deed/commits/v0.1.1