Repository navigation
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