Skip to content

Added gRPC server streaming support for desktop/Wails#248

Merged
wham merged 5 commits intomainfrom
claude/grpc-wails-support-d1UJa
Apr 27, 2026
Merged

Added gRPC server streaming support for desktop/Wails#248
wham merged 5 commits intomainfrom
claude/grpc-wails-support-d1UJa

Conversation

@wham
Copy link
Copy Markdown
Owner

@wham wham commented Feb 18, 2026

Adds gRPC server streaming support for the desktop/Wails build. Streamed responses arrive as Wails events from Go and render in the Response tab as independent JSON blocks. Web mode is unaffected (still gRPC-Web unary only).

🎬 Demo

Video

Demo

Home

Home

Call

Call

Compiler

Compiler

New Project

New Project

@wham wham force-pushed the claude/grpc-wails-support-d1UJa branch from 2fcd395 to 6c3c0b3 Compare February 22, 2026 06:23
@wham wham marked this pull request as draft March 27, 2026 20:31
@wham wham force-pushed the claude/grpc-wails-support-d1UJa branch 3 times, most recently from 816fe95 to 031c465 Compare April 26, 2026 18:35
wham added 4 commits April 26, 2026 20:47
- Added ServerStream method to Go gRPC client using raw byte codec and grpc.NewStream
- Added TargetServerStream and CancelStream Wails bindings that emit response chunks via Wails events
- Implemented serverStreaming() in WailsTransport using RpcOutputStreamController and EventsOn
- Extended Method interface with serverStreaming/clientStreaming flags from protobuf-ts MethodInfo
- Updated client.ts to handle server streaming via async iteration of responses
- Added streaming UI: status indicator, message count, stream progress bar in Console
- Added stream label on streaming methods in Sidebar TreeView

https://claude.ai/code/session_01EDaG2s7TQn7gmdBzRo6sDK
Matched MethodCall updates by stable id instead of object reference,
so each streamed response updates the existing call row rather than
appending a new one.

https://claude.ai/code/session_01EDaG2s7TQn7gmdBzRo6sDK
- Replaced in-place push with a fresh array so JsonViewer sees the reference change and re-renders after each streamed message.
- Added a rawText prop to JsonViewer that bypasses the JSON.stringify/prettier pipeline and sets editor content directly.
- In streaming mode, Console now pretty-prints each message separately and joins them with blank lines, so messages appear as independent JSON nodes instead of inside a single [] array.

https://claude.ai/code/session_01EDaG2s7TQn7gmdBzRo6sDK
@wham wham force-pushed the claude/grpc-wails-support-d1UJa branch from 031c465 to 50fa84d Compare April 27, 2026 03:47
- Removed "stream" labels from sidebar, message counter from call list, and stream status sub-panel
- Fixed JsonViewer race where instantaneous server stream responses left the editor empty until clicking another call

https://claude.ai/code/session_01EDaG2s7TQn7gmdBzRo6sDK
@wham wham marked this pull request as ready for review April 27, 2026 05:07
@wham wham merged commit b216803 into main Apr 27, 2026
6 checks passed
@wham wham deleted the claude/grpc-wails-support-d1UJa branch April 27, 2026 05:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant