Skip to content

deed v0.1.3

Choose a tag to compare

@thep200 thep200 released this 26 Jun 10:14
· 30 commits to master since this release

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 timeout
    • tls — 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=2 mode draws retro, non-anti-aliased (chunky) rounded corners. Tune with CORNER_RADIUS_PX (corner size) and CORNER_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 global default_timeout_ms setting was removed in favor of per-request timeout_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 .env ceiling (raised so your setting isn't overridden).

🏗️ Build & internals

  • Simplified Makefile — just four commands: make help, make setup, make build (→ signed dist/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/_deps and applies local patches automatically at configure time.
  • Warning-free build — make build produces 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