Show agent-server version errors for workspaces#742
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
all-hands-bot
left a comment
There was a problem hiding this comment.
Taste Rating: 🟢 Good taste - Clean implementation with proper error typing and consistent UX patterns.
[DEPENDENCY NOTE]
This PR depends on @openhands/typescript-client branch codex/agent-server-version-errors (OpenHands/typescript-client#176), pinned to commit 255df0c. The dependency is well-managed with lockfile pinning and explicit documentation in the PR description. This follows the repo's established pattern for depending on unreleased typescript-client features during active development (see AGENTS.md note about commit pinning).
Once the upstream PR merges, consider updating to a tagged release or main branch ref.
[IMPLEMENTATION HIGHLIGHTS]
- Clean abstraction: The
getWorkspacesUnsupportedMessagehelper centralizes error detection and message formatting - Proper preflight: Service layer calls
assertAgentServerSupportsbefore each workspace API call, preventing 404s - Consistent UX: Disabled controls + tooltips across all workspace entry points (home, sidebar, dropdowns)
- Good test coverage: Service layer, hooks, and component-level tests verify the typed error propagates correctly
- i18n ready: Version-aware error messages with interpolated version numbers
[RISK ASSESSMENT]
- [Overall PR]
⚠️ Risk Assessment: 🟡 MEDIUM
The implementation quality is high and test coverage is thorough. The medium risk rating reflects the dependency on unreleased upstream code rather than code quality concerns. The functional changes are additive - they improve error messaging for a scenario that already didn't work (old servers + workspaces), without affecting users on supported servers (>= 1.23.0).
VERDICT:
✅ Worth merging: Solid implementation that replaces confusing 404s with helpful version-specific error messages. The upstream dependency is well-managed and explicitly documented.
KEY INSIGHT:
Proper use of SDK-provided typed errors (AgentServerVersionError) enables graceful degradation and actionable user feedback when agent-server versions don't support workspace features.
Was this automated review useful? React with 👍 or 👎 to this review to help us measure review quality.
Workflow run: https://github.com/OpenHands/agent-canvas/actions/runs/26331878271
all-hands-bot
left a comment
There was a problem hiding this comment.
Taste Rating: 🟢 Good taste - Clean implementation with proper error typing and consistent UX patterns.
The version error preflight in workspaces-service.api.ts is elegant: typed errors flow cleanly through the UI layer, enabling graceful degradation (disable + tooltip) instead of cryptic 404s. Test coverage validates the error paths, and centralized message extraction in workspaces-compatibility.ts keeps it maintainable.
[RISK ASSESSMENT]
- [Overall PR]
⚠️ Risk Assessment: 🟢 LOW
Infrastructure enhancement for version compatibility checking. Additive change with graceful degradation, good test coverage, no breaking changes.
VERDICT:
✅ Worth merging
Was this automated review useful? React with 👍 or 👎 to this review to help us measure review quality.
Workflow run: https://github.com/OpenHands/agent-canvas/actions/runs/26332299806
📸 Snapshot Test ReportWarning Snapshot comparison step crashed (timeout, OOM, or runner error) — diff results below may be incomplete or absent. ✅ 2 snapshots changed — acknowledged via the
🔴 Changed snapshots (2)
|
| Expected (main) | Actual (PR) | Diff |
|---|---|---|
![]() |
![]() |
![]() |
backend-manage-two-listed
| Expected (main) | Actual (PR) | Diff |
|---|---|---|
![]() |
![]() |
![]() |
✅ Unchanged snapshots (71)
archived-conversation
- conversation-panel-with-archived-badges
- conversation-view-archived
- conversation-view-sandbox-error
automations
- automations-delete-modal
- automations-list-active-inactive
- automations-no-automations
- automations-search-no-results
backends-extended
- backend-add-blank-disabled
- backend-add-cloud-advanced-open
- backend-add-cloud-no-key-disabled
- backend-add-cloud-with-key-enabled
- backend-add-form-partially-filled
- backend-add-invalid-url-disabled
- backend-add-local-ready
- backend-add-name-only-disabled
- backend-add-two-column-layout
- backend-add-whitespace-host-disabled
- backend-after-switch
- backend-dropdown-two-backends
- backend-edit-prefilled
- backend-manage-after-removal
- backend-remove-cancelled
- backend-remove-confirmation
- backend-switch-overlay
backends
- backend-add-modal
- backend-manage-modal
- backend-selector-open
changes-tab
- changes-deleted-file
- changes-diff-viewer
- changes-empty
collapsible-thinking
- reasoning-content-collapsed
- reasoning-content-expanded
- think-action-collapsed
- think-action-expanded
mcp-page
- mcp-custom-server-1-editor-open
- mcp-custom-server-2-url-filled
- mcp-custom-server-3-all-filled
- mcp-custom-server-4-installed
- mcp-custom-server-editor
- mcp-empty-installed
- mcp-search-filtered
- mcp-slack-install-1-marketplace
- mcp-slack-install-2-modal
- mcp-slack-install-3-filled
- mcp-slack-install-4-installed
onboarding
- onboarding-step-0-choose-agent
- onboarding-step-1-check-backend
- onboarding-step-2-setup-llm
- onboarding-step-3-say-hello
projects-workspace-browser
- projects-workspace-browser
settings-page
- add-backend-modal
- analytics-consent-modal
- home-screen
- settings-app-page
- settings-page
settings-secrets
- secrets-add-form-filled
- secrets-add-form
- secrets-after-save
- secrets-delete-confirm
- secrets-list
settings-verification
- condenser-settings
- verification-settings-off
- verification-settings-on
sidebar
- sidebar-collapsed
- sidebar-conversation-panel
- sidebar-filter-menu
skills-page
- skills-empty
- skills-loaded
- skills-no-match
- skills-search-filtered
- skills-type-filter
Generated by the Snapshot Tests workflow. This comment was created by an AI agent (OpenHands) on behalf of the repo maintainers.






Summary
AgentServerVersionErrorand workspace compatibility helpersDepends on OpenHands/typescript-client#176.
Human Verification
HUMAN: I can confirm that this worked on my running agent canvas
Verification
npm test -- __tests__/api/workspaces-service.test.ts __tests__/components/features/home/workspace-selection-form.test.tsx __tests__/components/features/home/home-chat-launcher.test.tsx __tests__/components/features/conversation-panel/local-new-conversation-menu.test.tsxnpm run typechecknpm run buildnpm run lint🐳 Docker images for this PR
• GHCR package: https://github.com/OpenHands/agent-canvas/pkgs/container/agent-canvas
ghcr.io/openhands/agent-canvasghcr.io/openhands/agent-server:1.23.0-pythonopenhands-automation==1.0.0a3b2ef07c07fcf9f11c28545af08fbcd946ca64505Pull (multi-arch manifest)
# Multi-arch manifest — Docker automatically pulls the correct architecture docker pull ghcr.io/openhands/agent-canvas:sha-b2ef07cRun
All tags pushed for this build
About Multi-Architecture Support
sha-b2ef07c) is a multi-arch manifest supporting both amd64 and arm64sha-b2ef07c-amd64) are also available if needed