Repository navigation
Migrate Socket.IO Admin UI to Vue 3 by re-syncing with upstream - #1080
Merged
Merged
Conversation
The bundled Socket.IO Admin UI was a fork of socket.io-admin-ui@0.5.1 running
Vue 2.7 / Vuetify 2 / vue-cli 5. That stack carries five open Dependabot
advisories (vue, vuetify x2, vue-template-compiler, echarts) with no fix
available on the 2.x line.
Upstream has since published exactly one commit against ui/ -- the upgrade to
Vue 3, Vuetify 4 and Vite -- so re-syncing brings the framework upgrade and no
functional drift. That is a far smaller change than migrating our fork in place.
Our Azure-specific delta against 0.5.1 was 13 files (+515/-41) and was re-applied
on top of the new upstream tree:
- serverUrl renamed to serviceEndpoint throughout
- hub field, with path derived as /clients/socketio/hubs/{hub} and shown read-only
- queryString field, spread into the socket.io connection query
- Azure branding, Benchmark nav/route entries, and connection dialog defaults
- Benchmark view and histogram ported to Vue 3 and ECharts 6
Upstream left two artifacts behind in its own migration, fixed here:
- .env still declared VUE_APP_I18N_* while i18n.js reads VITE_I18N_*, so the
file was dead configuration
- public/index.html was the old vue-cli template, still holding unresolved
<%= BASE_URL %> placeholders, and was being copied into dist/
Also adds vue-eslint-parser explicitly, since yarn does not install peer
dependencies the way npm does.
Verified by building and running the app: connection dialog renders the Azure
fields with path correctly derived and reactive to hub changes, the Benchmark
view renders its ECharts canvas, and the console is free of errors and
exceptions. All five advisories resolve (echarts 6.1.0, vuetify 4.1.11,
vue 3.5.41, vue-template-compiler gone).
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: bf666f99-8d30-4763-878d-b566c0ac2f2d
Chenyang Liu (zackliu)
approved these changes
Sep 1, 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.
What
Migrates
tools/azure-socketio-admin-uifrom Vue 2.7 / Vuetify 2 / vue-cli 5 to Vue 3.5 / Vuetify 4 / Vite 7, by re-syncing with upstream rather than migrating our fork in place.This clears the last 5 open Dependabot alerts in the repo.
vuetify>=2.2.0-beta.2, <3.0.0-alpha.10(high)vuetify>=2.0.0, <3.0.0(moderate)vue-template-compiler>=2.0.0, <3.0.0(moderate)echarts<6.1.0(moderate)vue>=2.0.0-alpha.1, <3.0.0-alpha.0(low)Why re-sync instead of migrating in place
This tool is a fork of
socket.io-admin-ui@0.5.1. Upstream has published exactly one commit againstui/since that tag —3dae74e"upgrade to vue@3, vuetify@4 and chart.js@4". So re-syncing brings the framework upgrade and zero functional drift, and upstream did the hard conversion work already.Our Azure delta against
0.5.1measured 13 files, +515 / −41, and splits cleanly:connection.js,main.js,servers.js,en.json,zh-CN.json) — carried over verbatimApp.vue,AppBar.vue,ConnectionModal.vue,NavigationDrawer.vue,router/index.js, plus the Benchmark feature)Azure-specific behaviour, preserved
serverUrl→serviceEndpointthroughouthubfield, withpathderived as`/clients/socketio/hubs/${hub}`and rendered read-onlyqueryStringfield, spread into the socket.io connectionqueryTwo Vuetify 2 → 4 breaking changes surfaced in the Benchmark component and were fixed:
v-progress-linear'svalue→model-value, and thewhite--texthelper →text-white.Incidental fixes
Upstream left two artifacts behind in its own Vite migration:
.envwas dead configuration — it declaredVUE_APP_I18N_LOCALE/VUE_APP_I18N_FALLBACK_LOCALEwhilei18n.jsreadsimport.meta.env.VITE_I18N_*. Renamed to theVITE_prefix.public/index.htmlwas the old vue-cli template, still containing unresolved<%= BASE_URL %>and<%= htmlWebpackPlugin.options.title %>placeholders, and was being copied intodist/. Removed; the Vite rootindex.htmlreplaces it.Also adds
vue-eslint-parserexplicitly — npm 7+ auto-installs peer dependencies but yarn 1 does not, so upstream's npm-based install never surfaced the missing parser andyarn lintcrashed without it.Verification
Built and ran the app, driving it through CDP:
pathshows/clients/socketio/hubs/eio_hubas read-only, and updates reactively to/clients/socketio/hubs/my-custom-hubwhen the hub is editedyarn buildproduces a cleandist/(index.html+ hashed assets), sorelease_admin_ui.yml's artifact path still resolvesyarn lintreports 41 errors, all pre-existing upstream issues (vue/multi-word-component-names,vue/valid-v-slot,no-undefinvite.config.js) — none introduced here, and lint is not part of this package's CI.release_admin_ui.ymlpinsnode-version: 20, and the build fails on it:vue-i18n@11and its@intlify/*packages hard-requirenode >= 22, and Vite 7 wants^20.19.0 || >=22.12.0. Node 20 is also past end-of-life. The fix is one line:My token lacks the
workflowscope, so bothgit pushand the Contents API refuse to touch.github/workflows/. Someone with that scope needs to apply this to theadmin-ui-vue3branch before CI can go green.