feat: add web gateway hot reload and polling state sync#1684
Merged
wj-xiao merged 2 commits intosipeed:mainfrom Mar 17, 2026
Merged
feat: add web gateway hot reload and polling state sync#1684wj-xiao merged 2 commits intosipeed:mainfrom
wj-xiao merged 2 commits intosipeed:mainfrom
Conversation
- extract gateway runtime into pkg/gateway - add gateway.hot_reload config with default and example values - allow starting the gateway without a default model via --allow-empty - stop treating missing enabled channels as a startup error - update related tests
- remove gateway SSE broadcasting and event endpoint - add polling-based gateway status refresh with stopping state handling - detect when gateway restart is required after default model changes - resolve gateway health and websocket proxy targets from configured host - update gateway UI labels and add backend/frontend test coverage
taorye
approved these changes
Mar 17, 2026
dome
pushed a commit
to domeclaw/domeclaw
that referenced
this pull request
Mar 17, 2026
* feat(gateway): support hot reload and empty startup - extract gateway runtime into pkg/gateway - add gateway.hot_reload config with default and example values - allow starting the gateway without a default model via --allow-empty - stop treating missing enabled channels as a startup error - update related tests * feat: replace gateway SSE updates with polling-based state sync - remove gateway SSE broadcasting and event endpoint - add polling-based gateway status refresh with stopping state handling - detect when gateway restart is required after default model changes - resolve gateway health and websocket proxy targets from configured host - update gateway UI labels and add backend/frontend test coverage
vanitu
pushed a commit
to vanitu/picoclaw
that referenced
this pull request
Mar 17, 2026
This merge brings in upstream changes including: - zerolog logger refactoring (sipeed#1239) - Anthropic Messages API support (sipeed#1284) - Global WebSocket for Pico chat (sipeed#1507) - ModelScope and LongCat providers (sipeed#1317, sipeed#1486) - Web gateway hot reload and polling (sipeed#1684) - Credential encryption with AES-GCM (sipeed#1521) - Cross-platform systray UI (sipeed#1649) - Security fixes for LINE webhooks, identity allowlist - And many more improvements Conflict resolved: - pkg/agent/instance.go: merged buildAllowReadPatterns/mediaTempDirPattern functions from upstream while preserving A2A registry Close() handling Custom features preserved: - A2A channel (Agent-to-Agent protocol) - Krabot channel - Enhanced Docker multi-channel support
alexhoshina
pushed a commit
to alexhoshina/picoclaw
that referenced
this pull request
Mar 17, 2026
* feat(gateway): support hot reload and empty startup - extract gateway runtime into pkg/gateway - add gateway.hot_reload config with default and example values - allow starting the gateway without a default model via --allow-empty - stop treating missing enabled channels as a startup error - update related tests * feat: replace gateway SSE updates with polling-based state sync - remove gateway SSE broadcasting and event endpoint - add polling-based gateway status refresh with stopping state handling - detect when gateway restart is required after default model changes - resolve gateway health and websocket proxy targets from configured host - update gateway UI labels and add backend/frontend test coverage
j0904
pushed a commit
to j0904/picoclaw
that referenced
this pull request
Mar 22, 2026
* feat(gateway): support hot reload and empty startup - extract gateway runtime into pkg/gateway - add gateway.hot_reload config with default and example values - allow starting the gateway without a default model via --allow-empty - stop treating missing enabled channels as a startup error - update related tests * feat: replace gateway SSE updates with polling-based state sync - remove gateway SSE broadcasting and event endpoint - add polling-based gateway status refresh with stopping state handling - detect when gateway restart is required after default model changes - resolve gateway health and websocket proxy targets from configured host - update gateway UI labels and add backend/frontend test coverage
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📝 Description
This PR makes the launcher-managed gateway reloadable and more resilient to config changes. It moves gateway startup and reload logic into
pkg/gateway, allowspicoclaw gatewayto start in a limited mode when no default model is configured, and replaces the launcher/frontend SSE status flow with adaptive polling plus an explicit stopping state. The backend gateway health/proxy logic also now respects the configured bind host instead of assuming127.0.0.1.🗣️ Type of Change
🤖 AI Code Generation
🔗 Related Issue
N/A
📚 Technical Context (Skip for Docs)
/api/gateway/statusavoids stale SSE state, and host-aware health probing keeps launcher-to-gateway checks working when the configured bind host is not the default loopback address.🧪 Test Environment
📸 Evidence (Optional)
Click to view Logs/Screenshots
☑️ Checklist