Integrate intocps/workspace and fetch workbench links from services API #1464
Closed
Copilot wants to merge 7 commits intofeature/distributed-demofrom
Closed
Integrate intocps/workspace and fetch workbench links from services API #1464Copilot wants to merge 7 commits intofeature/distributed-demofrom
Copilot wants to merge 7 commits intofeature/distributed-demofrom
Conversation
… docker compose files - Create workspaceServices Redux slice for fetching/storing workspace services - Update envUtil to derive workbench links from Redux services state - Update Workbench component to fetch services from API - Remove REACT_APP_WORKBENCHLINK_* from all config files - Update env.d.ts type definitions - Update configUtil.ts validation keys - Replace mltooling/ml-workspace-minimal:0.13.2 with intocps/workspace:latest Co-authored-by: prasadtalasila <9206466+prasadtalasila@users.noreply.github.com>
❌ 1 blocking issue (2 total)
@qltysh one-click actions:
|
…ation - Update envUtil tests to use Redux-based services instead of env vars - Update Workbench unit test with dispatch mock - Update Workbench integration test with services in Redux store - Update Config test to remove workbench link assertion - Add workspaceServices.slice tests with 100% coverage Co-authored-by: prasadtalasila <9206466+prasadtalasila@users.noreply.github.com>
…ervice keys Co-authored-by: prasadtalasila <9206466+prasadtalasila@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Add integration of new workspace for Ubuntu 24.04
Integrate intocps/workspace and fetch workbench links from services API
Feb 12, 2026
Codecov Report✅ All modified and coverable lines are covered by tests. Please upload reports for the commit f8b9707 to get more accurate results. Additional details and impacted files@@ Coverage Diff @@
## feature/distributed-demo #1464 +/- ##
=============================================================
+ Coverage 80.10% 96.96% +16.86%
=============================================================
Files 14 5 -9
Lines 1940 264 -1676
=============================================================
- Hits 1554 256 -1298
+ Misses 386 8 -378 see 19 files with indirect coverage changes
🚀 New features to boost your workflow:
|
…gration - Rename getWorkbenchLinkValues to useWorkbenchLinkValues (follows React hooks naming convention since it calls useSelector) - Extract buildUserLink pure function to avoid calling hooks inside loops (fixes React error #310) - Replace multiple Array#push() calls with spread operator - Remove unused waitFor import from Workbench.test.tsx - Replace 'as any' with proper ReturnType<typeof fetchWorkspaceServices> in tests - Replace unsafe Function type with typed selector parameter in envUtil.test.ts - Remove unused WorkspaceService import from slice test Co-authored-by: prasadtalasila <9206466+prasadtalasila@users.noreply.github.com>
Copilot
AI
changed the title
Integrate intocps/workspace and fetch workbench links from services API
Fix React hooks violations, eslint errors, and runtime crash in workspace integration
Feb 13, 2026
|
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.



Pull Request Template
Title
Fix React hooks violations, eslint errors, and runtime crash in workspace integration
Type of Change
Description
The workbench page crashes at runtime with React error #310 ("Rendered more hooks than during the previous render") because
getWorkbenchLinkValuescallsuseSelectoranduseUserLink(which itself callsuseSelector) inside aforEachloop — violating React's rules of hooks.Additionally, eslint flagged 6 errors across 4 files, and qlty flagged multiple
Array#push()calls.Core fix —
envUtil.tsgetWorkbenchLinkValues→useWorkbenchLinkValues(it's a hook)buildUserLinkpure function for use inside.map(), replacing the hook-in-loop patternuseSelectorcalls to function top levelforEach+pushwithfilter().map()+ spreadESLint fixes
waitForimport inWorkbench.test.tsxas any→as ReturnType<typeof fetchWorkspaceServices>inworkspaceServices.slice.test.tsFunctiontype →(state: Record<string, unknown>) => unknowninenvUtil.test.tsWorkspaceServiceimport in slice testCascading renames
Updated all references from
getWorkbenchLinkValues→useWorkbenchLinkValuesinWorkbench.tsx,global_mocks.tsx,envUtil.test.ts,Workbench.test.tsx, andLinkButtons.tsxdocstring.Testing
All existing test suites pass after changes:
yarn syntax(eslint) passes with zero errors.yarn buildsucceeds.Impact
Fixes a runtime crash on the workbench page. No API or behavioral changes — only the exported function name changes from
getWorkbenchLinkValuestouseWorkbenchLinkValues.Additional Information
React error #310 reference: https://react.dev/errors/310
Checklist
existing code.
Original prompt
This section details on the original issue you should resolve
<issue_title>[FEATURE]Integrate new workspace</issue_title>
<issue_description>## Describe the feature
As a user I want to use new workspace So That latest Ubuntu can be used in user workspace.
Describe the problems your feature request solves
The current code base uses
ml-workspace-minimal. Instead theintocps/workspaceimage available on docker hub must be used.docker pull intocps/workspace:latestThis image provides upgraded versions of services and the operating system from Ubuntu 20.04 to Ubuntu 24.04.
Describe the solution you'd like
Use New Workspace
Use
intocps/workspaceimage available on docker hub.docker pull intocps/workspace:latestThis image provides list of services at a URL of user workspace. For example, the user workspace of
user1of the DTaaS hosted athttps://foo.com, provides listing of services athttps://foo.com/user1/services. The format of JSON services is here.{ "desktop": { "name": "Desktop", "description": "Virtual Desktop Environment", "endpoint": "tools/vnc?path=user1%2Ftools%2Fvnc%2Fwebsockify" }, "vscode": { "name": "VS Code", "description": "VS Code IDE", "endpoint": "tools/vscode" }, "notebook": { "name": "Jupyter Notebook", "description": "Jupyter Notebook", "endpoint": "" }, "lab": { "name": "Jupyter Lab", "description": "Jupyter Lab IDE", "endpoint": "lab" } }See the Documentation
Update Client Config
The format of client config must be updated from
to new format given below.
The required workbench links for
must be derived from the services json fetched from
https://foo.com/user1/services. Fetch this json object once and place it in redux store. Further references to the services can be fulfilled by referring to the json object stored in redux store.Client Code Updates
The following parts of code base must be updated.
Update Docker Compose Files
Update the developer docker compose files to use the
intocps/workspace:latestin the place ofmltooling/ml-workspace-minimal:0.13.2.Success Criterion
Checklist:
</issue_description>
<agent_instructions>Use "System Architect" custom agent to make proper plan of implementation and then implement the feature.</agent_instructions>
##...
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.