# Nexus release diff manifest (2026-07-08) Baseline: - Old snapshot: `C:\Users\uzuma\Documents\Codex\2026-07-06\yuu\work\nexus_code_context\snapshots\nexus-source-20260707-070236` - New snapshot: `C:\Users\uzuma\Documents\Codex\2026-07-06\yuu\work\nexus_code_context\snapshots\nexus-source-20260707-112042` Excluded names/patterns: `.git`, `node_modules`, `.venv-*`, `venv`, `__pycache__`, `.ruff_cache`, `.playwright-mcp`, `.cursor`, `.pytest_cache`, `tmp`, `*.pyc`, `*.pyo`, `*.bak-`, `2025.2`, `=2025.2`. ## Summary - Added files: 381 - Modified files: 26 - Deleted files: 347 ## Added files - `.skills/nexus-btpanel-review/SKILL.md` - `.skills/nexus-security-review/SKILL.md` - `.skills/nexus-ssh-safety/SKILL.md` - `deploy/apply-release-bundle.sh` - `deploy/preflight-release-host.sh` - `docs/security/Nexus-SSH鍛戒护鎵ц瀹夊叏宸℃闃舵3-鏂囦欢浼犺緭涓庝笓鐢⊿kill-20260707.md` - `frontend-v2/index.html` - `frontend-v2/package-lock.json` - `frontend-v2/package.json` - `frontend-v2/postcss.config.js` - `frontend-v2/scripts/scan-app-v2-sensitive.mjs` - `frontend-v2/src/App.tsx` - `frontend-v2/src/components/ui/Badge.tsx` - `frontend-v2/src/components/ui/Panel.tsx` - `frontend-v2/src/features/dashboard/DashboardPage.tsx` - `frontend-v2/src/features/dashboard/api/dashboardApi.ts` - `frontend-v2/src/features/dashboard/components/AppShell.tsx` - `frontend-v2/src/features/dashboard/components/AssetInventoryPage.tsx` - `frontend-v2/src/features/dashboard/components/AuditLogPage.tsx` - `frontend-v2/src/features/dashboard/components/AuditTimeline.tsx` - `frontend-v2/src/features/dashboard/components/BtDomainSslPage.tsx` - `frontend-v2/src/features/dashboard/components/BtPanelPage.tsx` - `frontend-v2/src/features/dashboard/components/BtResourceOverviewPage.tsx` - `frontend-v2/src/features/dashboard/components/CommandPalette.tsx` - `frontend-v2/src/features/dashboard/components/ExecutionRecordsPage.tsx` - `frontend-v2/src/features/dashboard/components/GlobalSearchPage.tsx` - `frontend-v2/src/features/dashboard/components/HealthScore.tsx` - `frontend-v2/src/features/dashboard/components/OperationLogsPage.tsx` - `frontend-v2/src/features/dashboard/components/ReadOnlyFileBrowser.tsx` - `frontend-v2/src/features/dashboard/components/ScriptLibraryPage.tsx` - `frontend-v2/src/features/dashboard/components/SecurityInspectionPage.tsx` - `frontend-v2/src/features/dashboard/components/ServerDrawer.tsx` - `frontend-v2/src/features/dashboard/components/ServerTable.tsx` - `frontend-v2/src/features/dashboard/components/SettingsOverviewPage.tsx` - `frontend-v2/src/features/dashboard/components/StatCard.tsx` - `frontend-v2/src/features/dashboard/components/TaskCenter.tsx` - `frontend-v2/src/features/dashboard/components/TaskCenterPage.tsx` - `frontend-v2/src/features/dashboard/components/TerminalFilesPage.tsx` - `frontend-v2/src/features/dashboard/components/TrendPanel.tsx` - `frontend-v2/src/features/dashboard/components/TtlMatrix.tsx` - `frontend-v2/src/features/dashboard/components/WatchMonitoringPage.tsx` - `frontend-v2/src/features/dashboard/data/dashboardData.ts` - `frontend-v2/src/features/dashboard/hooks/useDashboardData.ts` - `frontend-v2/src/lib/api.ts` - `frontend-v2/src/lib/redaction.ts` - `frontend-v2/src/lib/utils.ts` - `frontend-v2/src/main.tsx` - `frontend-v2/src/stores/appStore.ts` - `frontend-v2/src/styles.css` - `frontend-v2/src/vite-env.d.ts` - `frontend-v2/tailwind.config.ts` - `frontend-v2/tsconfig.json` - `frontend-v2/tsconfig.node.json` - `frontend-v2/vite.config.ts` - `scripts/check_backend_test_env.py` - `scripts/check_deploy_excludes.py` - `scripts/check_text_integrity.py` - `scripts/generate_release_bundle.py` - `scripts/generate_release_diff.py` - `scripts/prepare_release_artifact.py` - `scripts/publish_release_bundle.py` - `scripts/run_btpanel_tests.py` - `scripts/run_btpanel_tests_docker.cmd` - `scripts/run_btpanel_tests_docker.sh` - `scripts/run_local_release_gate.py` - `scripts/scan_release_bundle.py` - `scripts/scan_release_manifest.py` - `scripts/verify_online_release.py` - `scripts/write_release_metadata.py` - `tests/test_btpanel_bootstrap_lock.py` - `tests/test_publish_release_bundle.py` - `tests/test_remote_archive_commands.py` - `web/app-v2/assets/DashboardPage--9cH96CJ.js` - `web/app-v2/assets/index-8f2_PJZM.js` - `web/app-v2/assets/index-saKc1OPG.css` - `web/app-v2/assets/query-B5fiFlYp.js` - `web/app-v2/assets/react-DGbf-iXy.js` - `web/app-v2/assets/rolldown-runtime-Bh1tDfsg.js` - `web/app-v2/assets/table-C-Cg70AL.js` - `web/app-v2/assets/ui-sq2aW9r5.js` - `web/app-v2/index.html` - `web/app/assets/AlertsPage-BZa6JbW1.js` - `web/app/assets/AlertsPage-DkbuUWgZ.js` - `web/app/assets/AuditPage-CrzMBMPz.js` - `web/app/assets/AuditPage-DE5F-bot.js` - `web/app/assets/BtPanelCrontabPage-CsxFXzwR.js` - `web/app/assets/BtPanelCrontabPage-DFAuKeNI.js` - `web/app/assets/BtPanelDatabasesPage-Cua9aENZ.js` - `web/app/assets/BtPanelDatabasesPage-Cxt_i4Lp.js` - `web/app/assets/BtPanelDomainsPage-9oKLFhi4.js` - `web/app/assets/BtPanelDomainsPage-CSupPzQH.js` - `web/app/assets/BtPanelLoginPage-DiKTnvyN.js` - `web/app/assets/BtPanelLoginPage-Dp3X10Er.js` - `web/app/assets/BtPanelMonitorPage-2tHIkE0-.js` - `web/app/assets/BtPanelMonitorPage-Pm3fw_df.js` - `web/app/assets/BtPanelMonitorPage-Td-5siPa.css` - `web/app/assets/BtPanelServicesPage-B652HAqe.js` - `web/app/assets/BtPanelServicesPage-DR8K2l-F.js` - `web/app/assets/BtPanelSettingsPage-BBi6ttQm.js` - `web/app/assets/BtPanelSettingsPage-DCQKy6JG.js` - `web/app/assets/BtPanelSiteCreatePage-DLG_BM-C.js` - `web/app/assets/BtPanelSiteCreatePage-DTCrnEa5.js` - `web/app/assets/BtPanelSitesPage--EP6G5x3.js` - `web/app/assets/BtPanelSitesPage-DWm4LMaV.js` - `web/app/assets/BtPanelSslPage-BuiQZ1OJ.js` - `web/app/assets/BtPanelSslPage-JWzPztxi.js` - `web/app/assets/CommandsPage-BNtXfIOs.js` - `web/app/assets/CommandsPage-CuHLCAHz.js` - `web/app/assets/CredentialsPage-BPUBEwg9.js` - `web/app/assets/CredentialsPage-Dc92himy.js` - `web/app/assets/DashboardPage-DOc8f-2E.js` - `web/app/assets/DashboardPage-DmG38yGr.css` - `web/app/assets/DashboardPage-yElaw2BV.js` - `web/app/assets/FilesPage-Be2kmggp.js` - `web/app/assets/FilesPage-By07WOZR.css` - `web/app/assets/FilesPage-DHwnC_As.js` - `web/app/assets/FleetTrendEChart-DbHCuhg7.css` - `web/app/assets/FleetTrendEChart-Dz57W1gD.js` - `web/app/assets/FleetTrendEChart-lgdTP3R-.js` - `web/app/assets/LoginPage-3NZZLudg.js` - `web/app/assets/LoginPage-BKIQ3yge.js` - `web/app/assets/LoginPage-BTEVFKpe.css` - `web/app/assets/PushPage-BcIAXgGU.js` - `web/app/assets/PushPage-DnVPUcAX.css` - `web/app/assets/PushPage-_afVGSg2.js` - `web/app/assets/RetriesPage-BdJWTxtp.js` - `web/app/assets/RetriesPage-C70vf571.js` - `web/app/assets/SchedulesPage-B47mlwc8.js` - `web/app/assets/SchedulesPage-B9PFTR71.css` - `web/app/assets/SchedulesPage-DM0j6jps.js` - `web/app/assets/ScriptRunsPage-CW2C9c7C.css` - `web/app/assets/ScriptRunsPage-DIeeXpt5.js` - `web/app/assets/ScriptRunsPage-DeZ4sRVP.js` - `web/app/assets/ScriptsPage-BWoaZhKf.js` - `web/app/assets/ScriptsPage-BrIbZLc5.css` - `web/app/assets/ScriptsPage-D8An6uCU.js` - `web/app/assets/ServerCategoryPicker-BJm8eTKs.js` - `web/app/assets/ServerCategoryPicker-BlyQtEug.js` - `web/app/assets/ServerCategoryPicker-CHn3BA4z.css` - `web/app/assets/ServerQuickAddDialogs-CoSabmGi.js` - `web/app/assets/ServerQuickAddDialogs-zcLgLArY.js` - `web/app/assets/ServerTransferPage-BdwpJEc4.css` - `web/app/assets/ServerTransferPage-CWGjaCXR.js` - `web/app/assets/ServerTransferPage-UYjJ6gzQ.js` - `web/app/assets/ServersPage-CEOh0Y1q.css` - `web/app/assets/ServersPage-D7wE_7hM.css` - `web/app/assets/ServersPage-nR5-sjDp.js` - `web/app/assets/ServersPage-nhvNw2_Z.js` - `web/app/assets/SettingsPage-Am37wCvf.js` - `web/app/assets/SettingsPage-FAHRRqSI.js` - `web/app/assets/StatCardsRow-CWt_wcFU.js` - `web/app/assets/StatCardsRow-CdfBB9tI.js` - `web/app/assets/StatCardsRow-snFLCRnD.css` - `web/app/assets/TerminalPage-CNkogNbG.js` - `web/app/assets/TerminalPage-DX9qLtN2.js` - `web/app/assets/TerminalPage-DvGyoWff.css` - `web/app/assets/VAutocomplete-B1NSIBuv.js` - `web/app/assets/VAutocomplete-CZMI3cz9.js` - `web/app/assets/VAutocomplete-D48FgPMA.css` - `web/app/assets/VCard-BCYbpv-w.css` - `web/app/assets/VCard-BwwttBcf.js` - `web/app/assets/VCard-pmpQR9O7.js` - `web/app/assets/VCheckbox-BO-mWtTk.js` - `web/app/assets/VCheckbox-ChRKi1kj.css` - `web/app/assets/VCheckbox-RnLQ4WBr.js` - `web/app/assets/VDataTable-ClfE0-sD.js` - `web/app/assets/VDataTable-D61zAwkI.css` - `web/app/assets/VDataTable-pRRodit6.js` - `web/app/assets/VDataTableServer-BIMNqMvk.js` - `web/app/assets/VDataTableServer-BysXbZ8p.js` - `web/app/assets/VDialog-BFQGuuXw.js` - `web/app/assets/VDialog-DP-kc9Gx.css` - `web/app/assets/VDialog-nKJcjfNL.js` - `web/app/assets/VExpansionPanels-ByOIBgKv.js` - `web/app/assets/VExpansionPanels-CUfe7Zz5.css` - `web/app/assets/VExpansionPanels-DUlWPWNJ.js` - `web/app/assets/VForm-CAvEgM-c.js` - `web/app/assets/VForm-uEqKaHHF.js` - `web/app/assets/VRow-DIr3-SqU.css` - `web/app/assets/VRow-qjxp2VJ5.js` - `web/app/assets/VRow-rmSa_q-C.js` - `web/app/assets/VSelect-3h-EI23Y.js` - `web/app/assets/VSelect-BmvHN1-i.css` - `web/app/assets/VSelect-BvR-yyLS.js` - `web/app/assets/VSkeletonLoader-BW_kZu-c.js` - `web/app/assets/VSkeletonLoader-CkAIsbz1.css` - `web/app/assets/VSkeletonLoader-gL4kF19X.js` - `web/app/assets/VSwitch-CIruBPax.js` - `web/app/assets/VSwitch-DPhHiAlh.css` - `web/app/assets/VSwitch-VDVIZTO7.js` - `web/app/assets/VTable-BTftprIQ.js` - `web/app/assets/VTable-Dq_7MYoa.css` - `web/app/assets/VTable-w1sxrmvd.js` - `web/app/assets/VTabs-BX9iYxVa.js` - `web/app/assets/VTabs-Bq6bCiCC.js` - `web/app/assets/VTabs-DjRHpLZ2.css` - `web/app/assets/VTextField-B-BnrJAQ.js` - `web/app/assets/VTextField-Bl91kSVs.css` - `web/app/assets/VTextField-GUQr1tUN.js` - `web/app/assets/VTextarea-BMTWx02W.js` - `web/app/assets/VTextarea-DDl63AeD.css` - `web/app/assets/VTextarea-PzNEhaMZ.js` - `web/app/assets/VTooltip-BbRT1OE8.js` - `web/app/assets/VTooltip-aiKJ1MVA.css` - `web/app/assets/VTooltip-tVMR683k.js` - `web/app/assets/WatchMetricsPage-BjqkPE11.css` - `web/app/assets/WatchMetricsPage-CL8abV00.js` - `web/app/assets/WatchMetricsPage-DByjAcyM.css` - `web/app/assets/WatchMetricsPage-DY4qY84I.js` - `web/app/assets/_plugin-vue_export-helper-BDNMzG2s.js` - `web/app/assets/abap-08VXUWAP.js` - `web/app/assets/apex-BWPQTe0t.js` - `web/app/assets/apiError-BUh3zCmq.js` - `web/app/assets/apiError-CpgZRt4T.js` - `web/app/assets/auditNormalize-xrm2MK_4.js` - `web/app/assets/azcli-Bc_sGQ0U.js` - `web/app/assets/bat-i0X4ZdIN.js` - `web/app/assets/bicep-B5-_aFwp.js` - `web/app/assets/btpanel-BsL25ffd.js` - `web/app/assets/btpanel-C_41A_fE.js` - `web/app/assets/cameligo-DMUM7wLl.js` - `web/app/assets/chunk-DK3Fl9T5.js` - `web/app/assets/clojure-Cm7r79vr.js` - `web/app/assets/codicon-ngg6Pgfi.ttf` - `web/app/assets/coffee-Ba7i2nA0.js` - `web/app/assets/cpp-C7h46wYY.js` - `web/app/assets/csharp-BKxtCVv1.js` - `web/app/assets/csp-bTuwJoIa.js` - `web/app/assets/css-DIMkf-bt.js` - `web/app/assets/css.worker-CvXBzhp8.js` - `web/app/assets/cssMode-CnBxfcpP.js` - `web/app/assets/cssMode-DoYviH0F.js` - `web/app/assets/cypher-CVaqCwHa.js` - `web/app/assets/dart-onAF5SnQ.js` - `web/app/assets/dataTable-esDY4cOk.js` - `web/app/assets/dist-DCycUQQT.js` - `web/app/assets/dist-DMqKEX4A.js` - `web/app/assets/dockerfile-DZFCIeNp.js` - `web/app/assets/ecl-D05T4iGw.js` - `web/app/assets/editor.worker-Cn2oRESe.js` - `web/app/assets/elixir-6RTg0lbw.js` - `web/app/assets/execDetailGrouping-B4lJ15VJ.js` - `web/app/assets/execDetailGrouping-CuMwXaZZ.js` - `web/app/assets/flow9-C5_-GSwl.js` - `web/app/assets/freemarker2-BUYL0LB-.js` - `web/app/assets/freemarker2-D0e9LerR.js` - `web/app/assets/fsharp-C8Ef5oNN.js` - `web/app/assets/go-C-y9NEjX.js` - `web/app/assets/graphql-fmXr3nnJ.js` - `web/app/assets/handlebars-C8vPzJIb.js` - `web/app/assets/handlebars-ncsxj4cu.js` - `web/app/assets/hcl-CpzslTdj.js` - `web/app/assets/html-8-zTuU_5.js` - `web/app/assets/html-DUT2IBNz.js` - `web/app/assets/html.worker-BO6WuOEO.js` - `web/app/assets/htmlMode-Bm_X9rOD.js` - `web/app/assets/htmlMode-C8LJuzCB.js` - `web/app/assets/index-BNJe_ogF.css` - `web/app/assets/index-CDcgx9V8.js` - `web/app/assets/index-a0fi5f-0.js` - `web/app/assets/ini-sBoK_t0W.js` - `web/app/assets/initMonaco-Cjv05FdX.js` - `web/app/assets/initMonaco-DTDMLv7Z.js` - `web/app/assets/initMonaco-DX2BVZF3.css` - `web/app/assets/install-BY4V-NK4.js` - `web/app/assets/install-bdNoH-9Q.js` - `web/app/assets/java-BEtHBSE6.js` - `web/app/assets/javascript-B4NqljlL.js` - `web/app/assets/javascript-wfMVVC84.js` - `web/app/assets/json.worker-BkJRGcCJ.js` - `web/app/assets/jsonMode-B06-mTjs.js` - `web/app/assets/jsonMode-B7uld_NH.js` - `web/app/assets/julia-Bri6UV-V.js` - `web/app/assets/kotlin-BOotOW0E.js` - `web/app/assets/labels-C-A2d08W.js` - `web/app/assets/less-B9JPFI3C.js` - `web/app/assets/lexon-CfSJPG6W.js` - `web/app/assets/liquid-B1dfVIHc.js` - `web/app/assets/liquid-BxkVsnPx.js` - `web/app/assets/lspLanguageFeatures-3WI5pdzZ.js` - `web/app/assets/lspLanguageFeatures-CaMGOy4a.js` - `web/app/assets/lua-CsQS60Ue.js` - `web/app/assets/m3-D-oSqn_W.js` - `web/app/assets/markdown-Cimd5fb3.js` - `web/app/assets/materialdesignicons-webfont-B7mPwVP_.ttf` - `web/app/assets/materialdesignicons-webfont-CSr8KVlo.eot` - `web/app/assets/materialdesignicons-webfont-Dp5v-WZN.woff2` - `web/app/assets/materialdesignicons-webfont-PXm3-2wK.woff` - `web/app/assets/mdx-B6lamGpH.js` - `web/app/assets/mdx-lREt6kXe.js` - `web/app/assets/mips-CIPQ_RoX.js` - `web/app/assets/msdax-DauUninz.js` - `web/app/assets/mysql-SOo6toE5.js` - `web/app/assets/objective-c-FvmIjYaQ.js` - `web/app/assets/paginatedFetch-CijkqaDG.js` - `web/app/assets/paginatedFetch-VYTwXwno.js` - `web/app/assets/pascal-DrH0SRf2.js` - `web/app/assets/pascaligo-D-ptJ9y-.js` - `web/app/assets/perl-oz_6vUea.js` - `web/app/assets/pgsql-DTj74zXo.js` - `web/app/assets/php-nr791fC2.js` - `web/app/assets/pla-CopQ2nXW.js` - `web/app/assets/postiats-43DmfD33.js` - `web/app/assets/powerquery-D3hlyOfw.js` - `web/app/assets/powershell-DmHpPYUd.js` - `web/app/assets/protobuf-C531GsRP.js` - `web/app/assets/pug-Z5eAx3Zn.js` - `web/app/assets/python-Dt0lyPW-.js` - `web/app/assets/python-DwgZPXhL.js` - `web/app/assets/qsharp-DkqhCAOL.js` - `web/app/assets/r-BwWrilGY.js` - `web/app/assets/razor-B1t_g3Ke.js` - `web/app/assets/razor-Dv9uiya3.js` - `web/app/assets/redis-ClamHrr6.js` - `web/app/assets/redshift-DT7zqm-g.js` - `web/app/assets/remotePath-D3rG2Z3e.js` - `web/app/assets/restructuredtext-BYgofb2h.js` - `web/app/assets/roboto-latin-300-normal-BARJ-h6h.woff` - `web/app/assets/roboto-latin-300-normal-CCzlftfr.woff2` - `web/app/assets/roboto-latin-400-normal-BqEyEoaF.woff2` - `web/app/assets/roboto-latin-400-normal-DyYNIH4P.woff` - `web/app/assets/roboto-latin-500-normal-7RbcRiD8.woff2` - `web/app/assets/roboto-latin-500-normal-DQZyH_nt.woff` - `web/app/assets/roboto-latin-700-normal-BZpUvMxY.woff2` - `web/app/assets/roboto-latin-700-normal-DLgJJpmK.woff` - `web/app/assets/ruby-DezsRK8O.js` - `web/app/assets/rust-DdL9SqIa.js` - `web/app/assets/sb-CcwsVR0C.js` - `web/app/assets/scala-DHpiXF5c.js` - `web/app/assets/scheme-BeGwcela.js` - `web/app/assets/scss-gp-XZpBa.js` - `web/app/assets/serverSiteUrl-DDZRgSNA.js` - `web/app/assets/shell-CC2rA5mh.js` - `web/app/assets/solidity-BEEn4gHE.js` - `web/app/assets/sophia-CRfGWb83.js` - `web/app/assets/sparql-D_Lu-MrJ.js` - `web/app/assets/sql-NEE52Syq.js` - `web/app/assets/st-DbInun42.js` - `web/app/assets/status-BrGQYcd-.js` - `web/app/assets/status-XDgjPQrL.js` - `web/app/assets/swift-Bxkupp3x.js` - `web/app/assets/systemverilog-Bz4Y3fRF.js` - `web/app/assets/tcl-DISqw1ZD.js` - `web/app/assets/ts.worker-B6r0Skfj.js` - `web/app/assets/tsMode-9bXRGx5g.js` - `web/app/assets/tsMode-ChdzhlZm.js` - `web/app/assets/twig-De2hgUGE.js` - `web/app/assets/typescript-D3T7er6k.js` - `web/app/assets/typescript-DRN2FRNg.js` - `web/app/assets/typespec-B8J7ngcE.js` - `web/app/assets/useBtPanelLogin-DCNB-U_J.js` - `web/app/assets/useBtPanelLogin-DDcleXPj.js` - `web/app/assets/useBtPanelPageLoad-CD81wbTP.js` - `web/app/assets/useBtPanelPageLoad-CV_unS2-.js` - `web/app/assets/usePageActivateRefresh-BntaOABK.js` - `web/app/assets/usePageActivateRefresh-CqHSpagO.js` - `web/app/assets/usePageAutoRefresh-DW8DyVQQ.js` - `web/app/assets/usePageAutoRefresh-DvG6Fd0_.js` - `web/app/assets/usePushStaging-BCIq1TPK.js` - `web/app/assets/usePushStaging-CfCU7s8k.css` - `web/app/assets/usePushStaging-DcgeHeSX.js` - `web/app/assets/useServerCategories-BcvoZF0H.js` - `web/app/assets/useServerCategories-V7luFEnW.js` - `web/app/assets/useServerList-6fsbQxWS.js` - `web/app/assets/useServerList-w3j3GRMG.js` - `web/app/assets/useServerSearchHistory-BnDuA-7p.js` - `web/app/assets/useServerSearchHistory-C3ha-zP2.css` - `web/app/assets/useServerSearchHistory-CTnIHvTd.js` - `web/app/assets/useSnackbar-u_XK4ZNm.js` - `web/app/assets/useTerminalQuickCommands-CGHoPHjs.js` - `web/app/assets/useTerminalQuickCommands-DKqOac6p.js` - `web/app/assets/useTerminalQuickCommands-DyOcH0CY.css` - `web/app/assets/useWatchPins-DTUw7j9v.js` - `web/app/assets/useWatchPins-DxD91kwD.js` - `web/app/assets/validation-BMzYTJL4.js` - `web/app/assets/vb-DV3o63ZY.js` - `web/app/assets/wgsl-DpFanUEy.js` - `web/app/assets/xml-BFdUA9kH.js` - `web/app/assets/xml-Btmx4yuJ.js` - `web/app/assets/yaml-DKn-1xmA.js` - `web/app/assets/yaml-tUm_O8N4.js` ## Modified files - `.dockerignore` - `Dockerfile` - `Dockerfile.prod` - `deploy/deploy-production.sh` - `deploy/rsync-local-to-server.sh` - `deploy/sync_webapp_to_container.sh` - `docker-compose.yml` - `docs/research/jumpserver-easynode-architecture-analysis.md` - `requirements-dev.txt` - `server/api/assets.py` - `server/api/scripts.py` - `server/api/sync_v2.py` - `server/application/services/btpanel_service.py` - `server/application/services/server_file_transfer_service.py` - `server/infrastructure/btpanel/bootstrap_lock.py` - `server/infrastructure/btpanel/login_url_lock.py` - `server/infrastructure/btpanel/ssh_bootstrap.py` - `server/infrastructure/ssh/remote_archive.py` - `server/main.py` - `server/utils/files_chmod_policy.py` - `tests/test_btpanel_get_config.py` - `tests/test_btpanel_login_url.py` - `tests/test_btpanel_login_url_route.py` - `tests/test_btpanel_ssh_bootstrap.py` - `tests/test_file_permissions.py` - `tests/test_server_file_transfer.py` ## Deleted files - `docker/.env.example` - `docker/.env.prod.example` - `docker/profiles/1c4g.env` - `docker/profiles/2c8g.env` - `docker/profiles/4c16g.env` - `docs/Nexus-功能说明书.html` - `frontend/.env.development` - `scripts/npm-proxy.env` - `web/app/dist/assets/AlertsPage-ji5eXKTc.js` - `web/app/dist/assets/AuditPage-C3fmqt6f.js` - `web/app/dist/assets/CommandsPage-C6QrgHcR.js` - `web/app/dist/assets/CredentialsPage-oLbFLgd2.js` - `web/app/dist/assets/DashboardPage-CKfPpNOT.js` - `web/app/dist/assets/FilesPage-BvG082ru.css` - `web/app/dist/assets/FilesPage-DNKIBjNs.js` - `web/app/dist/assets/LoginPage-D8ZqP1P_.js` - `web/app/dist/assets/MonacoEditor-Sfe2OjtA.js` - `web/app/dist/assets/PushPage-BDdmIVXZ.js` - `web/app/dist/assets/PushPage-ewjA8E7l.css` - `web/app/dist/assets/RetriesPage-BJbJspGS.js` - `web/app/dist/assets/SchedulesPage-D6oD8ext.js` - `web/app/dist/assets/ScriptsPage-CbZT-hk0.js` - `web/app/dist/assets/ServersPage-B4elP3Z1.js` - `web/app/dist/assets/ServersPage-DjRHpLZ2.css` - `web/app/dist/assets/SettingsPage-BuPIwZWo.js` - `web/app/dist/assets/TerminalPage-BGKczTgd.js` - `web/app/dist/assets/TerminalPage-Ol9WjDlo.css` - `web/app/dist/assets/VAlert-B33BooF0.css` - `web/app/dist/assets/VAlert-DGGVwUFF.js` - `web/app/dist/assets/VDataTable-0Xurhrxv.js` - `web/app/dist/assets/VDataTable-DlpDfCoY.css` - `web/app/dist/assets/VDataTableServer-FvIQviSN.js` - `web/app/dist/assets/VDialog-BLibPcoM.js` - `web/app/dist/assets/VDialog-DP-kc9Gx.css` - `web/app/dist/assets/VFileInput-C6sFcwsM.js` - `web/app/dist/assets/VFileInput-HYy7i9zh.css` - `web/app/dist/assets/VRow-DIr3-SqU.css` - `web/app/dist/assets/VRow-r8nkWmtD.js` - `web/app/dist/assets/VSelect-ALpjlDrA.css` - `web/app/dist/assets/VSelect-Bz5bHvpa.js` - `web/app/dist/assets/VSelectionControl-BTVr3HQm.css` - `web/app/dist/assets/VSelectionControl-C1Y9bNOF.js` - `web/app/dist/assets/VSpacer-DWZdSXUK.js` - `web/app/dist/assets/VSpacer-DfbUir7X.css` - `web/app/dist/assets/VSwitch-DPhHiAlh.css` - `web/app/dist/assets/VSwitch-DY1GlILd.js` - `web/app/dist/assets/VTextarea-3TieuoAv.js` - `web/app/dist/assets/VTextarea-DDl63AeD.css` - `web/app/dist/assets/abap-08VXUWAP.js` - `web/app/dist/assets/apex-BWPQTe0t.js` - `web/app/dist/assets/azcli-Bc_sGQ0U.js` - `web/app/dist/assets/bat-i0X4ZdIN.js` - `web/app/dist/assets/bicep-B5-_aFwp.js` - `web/app/dist/assets/cameligo-DMUM7wLl.js` - `web/app/dist/assets/clojure-Cm7r79vr.js` - `web/app/dist/assets/codicon-ngg6Pgfi.ttf` - `web/app/dist/assets/coffee-Ba7i2nA0.js` - `web/app/dist/assets/cpp-C7h46wYY.js` - `web/app/dist/assets/csharp-BKxtCVv1.js` - `web/app/dist/assets/csp-bTuwJoIa.js` - `web/app/dist/assets/css-DIMkf-bt.js` - `web/app/dist/assets/css.worker-CvXBzhp8.js` - `web/app/dist/assets/cssMode-DMvENJ_w.js` - `web/app/dist/assets/cypher-CVaqCwHa.js` - `web/app/dist/assets/dart-onAF5SnQ.js` - `web/app/dist/assets/dockerfile-DZFCIeNp.js` - `web/app/dist/assets/ecl-D05T4iGw.js` - `web/app/dist/assets/editor-DX2BVZF3.css` - `web/app/dist/assets/editor.api2-MWf-eAi-.js` - `web/app/dist/assets/elixir-6RTg0lbw.js` - `web/app/dist/assets/flow9-C5_-GSwl.js` - `web/app/dist/assets/freemarker2-DQGAilFk.js` - `web/app/dist/assets/fsharp-C8Ef5oNN.js` - `web/app/dist/assets/go-C-y9NEjX.js` - `web/app/dist/assets/graphql-fmXr3nnJ.js` - `web/app/dist/assets/handlebars-DCagTjhi.js` - `web/app/dist/assets/hcl-CpzslTdj.js` - `web/app/dist/assets/html-nrfydv4h.js` - `web/app/dist/assets/html.worker-BO6WuOEO.js` - `web/app/dist/assets/htmlMode-Bp4WNwyQ.js` - `web/app/dist/assets/index-DOFNruam.js` - `web/app/dist/assets/index-YClpuO23.css` - `web/app/dist/assets/ini-sBoK_t0W.js` - `web/app/dist/assets/java-BEtHBSE6.js` - `web/app/dist/assets/javascript-B0RcszDa.js` - `web/app/dist/assets/json.worker-BkJRGcCJ.js` - `web/app/dist/assets/jsonMode-D0vdA3eU.js` - `web/app/dist/assets/julia-Bri6UV-V.js` - `web/app/dist/assets/kotlin-BOotOW0E.js` - `web/app/dist/assets/less-B9JPFI3C.js` - `web/app/dist/assets/lexon-CfSJPG6W.js` - `web/app/dist/assets/liquid-DAtIwle-.js` - `web/app/dist/assets/lspLanguageFeatures-DRDm87pn.js` - `web/app/dist/assets/lua-CsQS60Ue.js` - `web/app/dist/assets/m3-D-oSqn_W.js` - `web/app/dist/assets/markdown-Cimd5fb3.js` - `web/app/dist/assets/materialdesignicons-webfont-B7mPwVP_.ttf` - `web/app/dist/assets/materialdesignicons-webfont-CSr8KVlo.eot` - `web/app/dist/assets/materialdesignicons-webfont-Dp5v-WZN.woff2` - `web/app/dist/assets/materialdesignicons-webfont-PXm3-2wK.woff` - `web/app/dist/assets/mdx-BvtNR28y.js` - `web/app/dist/assets/mips-CIPQ_RoX.js` - `web/app/dist/assets/monaco.contribution-fyH2rvpO.js` - `web/app/dist/assets/msdax-DauUninz.js` - `web/app/dist/assets/mysql-SOo6toE5.js` - `web/app/dist/assets/objective-c-FvmIjYaQ.js` - `web/app/dist/assets/pascal-DrH0SRf2.js` - `web/app/dist/assets/pascaligo-D-ptJ9y-.js` - `web/app/dist/assets/perl-oz_6vUea.js` - `web/app/dist/assets/pgsql-DTj74zXo.js` - `web/app/dist/assets/php-nr791fC2.js` - `web/app/dist/assets/pla-CopQ2nXW.js` - `web/app/dist/assets/postiats-43DmfD33.js` - `web/app/dist/assets/powerquery-D3hlyOfw.js` - `web/app/dist/assets/powershell-DmHpPYUd.js` - `web/app/dist/assets/protobuf-C531GsRP.js` - `web/app/dist/assets/pug-Z5eAx3Zn.js` - `web/app/dist/assets/python-Y2lQRCrb.js` - `web/app/dist/assets/qsharp-DkqhCAOL.js` - `web/app/dist/assets/r-BwWrilGY.js` - `web/app/dist/assets/razor-DHI-mrmN.js` - `web/app/dist/assets/redis-ClamHrr6.js` - `web/app/dist/assets/redshift-DT7zqm-g.js` - `web/app/dist/assets/restructuredtext-BYgofb2h.js` - `web/app/dist/assets/roboto-cyrillic-100-italic-CNP2SmvR.woff2` - `web/app/dist/assets/roboto-cyrillic-100-italic-GfU4zM_J.woff` - `web/app/dist/assets/roboto-cyrillic-100-normal-D_oR061d.woff2` - `web/app/dist/assets/roboto-cyrillic-100-normal-w5umKD67.woff` - `web/app/dist/assets/roboto-cyrillic-300-italic-Bbg0zipm.woff2` - `web/app/dist/assets/roboto-cyrillic-300-italic-BfviqnaP.woff` - `web/app/dist/assets/roboto-cyrillic-300-normal-DEFNdjk5.woff` - `web/app/dist/assets/roboto-cyrillic-300-normal-DzUz0kzv.woff2` - `web/app/dist/assets/roboto-cyrillic-400-italic-BSQCxleC.woff` - `web/app/dist/assets/roboto-cyrillic-400-italic-CqC_ywG3.woff2` - `web/app/dist/assets/roboto-cyrillic-400-normal-Bjg-1-sg.woff` - `web/app/dist/assets/roboto-cyrillic-400-normal-CBPI_iaY.woff2` - `web/app/dist/assets/roboto-cyrillic-500-italic-CFOZTHyM.woff2` - `web/app/dist/assets/roboto-cyrillic-500-italic-UnqpRRY_.woff` - `web/app/dist/assets/roboto-cyrillic-500-normal-CBKMylY4.woff` - `web/app/dist/assets/roboto-cyrillic-500-normal-CLao9AfR.woff2` - `web/app/dist/assets/roboto-cyrillic-700-italic-DhNJyfCT.woff2` - `web/app/dist/assets/roboto-cyrillic-700-italic-K45OuYTL.woff` - `web/app/dist/assets/roboto-cyrillic-700-normal-C2o7G-SM.woff2` - `web/app/dist/assets/roboto-cyrillic-700-normal-DhZFXDSN.woff` - `web/app/dist/assets/roboto-cyrillic-900-italic-CW7hKEUp.woff2` - `web/app/dist/assets/roboto-cyrillic-900-italic-Dw8LBt_T.woff` - `web/app/dist/assets/roboto-cyrillic-900-normal-B-XH5ueX.woff` - `web/app/dist/assets/roboto-cyrillic-900-normal-BVOxCBIE.woff2` - `web/app/dist/assets/roboto-cyrillic-ext-100-italic-CHVV4rI0.woff` - `web/app/dist/assets/roboto-cyrillic-ext-100-italic-Drj7gMwC.woff2` - `web/app/dist/assets/roboto-cyrillic-ext-100-normal-mbO7vZh1.woff` - `web/app/dist/assets/roboto-cyrillic-ext-100-normal-uxSc4Dbo.woff2` - `web/app/dist/assets/roboto-cyrillic-ext-300-italic-D2iEI_X7.woff2` - `web/app/dist/assets/roboto-cyrillic-ext-300-italic-OnrzXwVD.woff` - `web/app/dist/assets/roboto-cyrillic-ext-300-normal-D7ank4TF.woff` - `web/app/dist/assets/roboto-cyrillic-ext-300-normal-DIxttMbC.woff2` - `web/app/dist/assets/roboto-cyrillic-ext-400-italic-4ESj9BbU.woff2` - `web/app/dist/assets/roboto-cyrillic-ext-400-italic-MZ-G6OiW.woff` - `web/app/dist/assets/roboto-cyrillic-ext-400-normal-CaK1767H.woff` - `web/app/dist/assets/roboto-cyrillic-ext-400-normal-qHufge6k.woff2` - `web/app/dist/assets/roboto-cyrillic-ext-500-italic-C-yqETei.woff2` - `web/app/dist/assets/roboto-cyrillic-ext-500-italic-ExZ7-vA1.woff` - `web/app/dist/assets/roboto-cyrillic-ext-500-normal-BWC_xYeb.woff2` - `web/app/dist/assets/roboto-cyrillic-ext-500-normal-DqF2hftb.woff` - `web/app/dist/assets/roboto-cyrillic-ext-700-italic-BPGsVrTY.woff2` - `web/app/dist/assets/roboto-cyrillic-ext-700-italic-DEF-7i1Y.woff` - `web/app/dist/assets/roboto-cyrillic-ext-700-normal-CI7FH63F.woff` - `web/app/dist/assets/roboto-cyrillic-ext-700-normal-DmFxo5wj.woff2` - `web/app/dist/assets/roboto-cyrillic-ext-900-italic-CSUk7NP9.woff` - `web/app/dist/assets/roboto-cyrillic-ext-900-italic-acKlpJv6.woff2` - `web/app/dist/assets/roboto-cyrillic-ext-900-normal-Dy18Zgm9.woff` - `web/app/dist/assets/roboto-cyrillic-ext-900-normal-IZ2B0aiV.woff2` - `web/app/dist/assets/roboto-greek-100-italic-BByoHCxw.woff2` - `web/app/dist/assets/roboto-greek-100-italic-Cy3jdfDA.woff` - `web/app/dist/assets/roboto-greek-100-normal-DgpMWfbq.woff2` - `web/app/dist/assets/roboto-greek-100-normal-ZuTz319d.woff` - `web/app/dist/assets/roboto-greek-300-italic-BlmQgaZh.woff` - `web/app/dist/assets/roboto-greek-300-italic-CznjWsFz.woff2` - `web/app/dist/assets/roboto-greek-300-normal-C_Dgaih9.woff` - `web/app/dist/assets/roboto-greek-300-normal-DJEM9B4Z.woff2` - `web/app/dist/assets/roboto-greek-400-italic-BUWCAFe1.woff` - `web/app/dist/assets/roboto-greek-400-italic-DnTUMkdF.woff2` - `web/app/dist/assets/roboto-greek-400-normal-Bb5mj_fZ.woff` - `web/app/dist/assets/roboto-greek-400-normal-ai2Z1K3C.woff2` - `web/app/dist/assets/roboto-greek-500-italic-Dqz20l7v.woff2` - `web/app/dist/assets/roboto-greek-500-italic-xdwGU0k_.woff` - `web/app/dist/assets/roboto-greek-500-normal-C9AnhcmC.woff2` - `web/app/dist/assets/roboto-greek-500-normal-oCqhoyfc.woff` - `web/app/dist/assets/roboto-greek-700-italic-DawR0hnC.woff2` - `web/app/dist/assets/roboto-greek-700-italic-P6YHZuSy.woff` - `web/app/dist/assets/roboto-greek-700-normal-0aHWxGLu.woff2` - `web/app/dist/assets/roboto-greek-700-normal-DjRqqLBV.woff` - `web/app/dist/assets/roboto-greek-900-italic-B7xCHAj9.woff` - `web/app/dist/assets/roboto-greek-900-italic-DvS3zuic.woff2` - `web/app/dist/assets/roboto-greek-900-normal-B5AAzeOC.woff2` - `web/app/dist/assets/roboto-greek-900-normal-DWdVoZCP.woff` - `web/app/dist/assets/roboto-latin-100-italic-CMH2tK0H.woff2` - `web/app/dist/assets/roboto-latin-100-italic-DZWoXrp_.woff` - `web/app/dist/assets/roboto-latin-100-normal-CGMktwvD.woff` - `web/app/dist/assets/roboto-latin-100-normal-vTzS_GaG.woff2` - `web/app/dist/assets/roboto-latin-300-italic-B5i8yzYq.woff` - `web/app/dist/assets/roboto-latin-300-italic-zCpkrxSM.woff2` - `web/app/dist/assets/roboto-latin-300-normal-BARJ-h6h.woff` - `web/app/dist/assets/roboto-latin-300-normal-CCzlftfr.woff2` - `web/app/dist/assets/roboto-latin-400-italic-C2a9rKC1.woff` - `web/app/dist/assets/roboto-latin-400-italic-CSuqwwKr.woff2` - `web/app/dist/assets/roboto-latin-400-normal-BqEyEoaF.woff2` - `web/app/dist/assets/roboto-latin-400-normal-DyYNIH4P.woff` - `web/app/dist/assets/roboto-latin-500-italic-Bzx6Emny.woff` - `web/app/dist/assets/roboto-latin-500-italic-DOe3GFcv.woff2` - `web/app/dist/assets/roboto-latin-500-normal-7RbcRiD8.woff2` - `web/app/dist/assets/roboto-latin-500-normal-DQZyH_nt.woff` - `web/app/dist/assets/roboto-latin-700-italic-CC4lh_E9.woff` - `web/app/dist/assets/roboto-latin-700-italic-Cb9agdGy.woff2` - `web/app/dist/assets/roboto-latin-700-normal-BZpUvMxY.woff2` - `web/app/dist/assets/roboto-latin-700-normal-DLgJJpmK.woff` - `web/app/dist/assets/roboto-latin-900-italic-BENCS7Df.woff2` - `web/app/dist/assets/roboto-latin-900-italic-DNjw4RGV.woff` - `web/app/dist/assets/roboto-latin-900-normal-F72S18P8.woff` - `web/app/dist/assets/roboto-latin-900-normal-lk0O8k6m.woff2` - `web/app/dist/assets/roboto-latin-ext-100-italic-BzoOrAFP.woff` - `web/app/dist/assets/roboto-latin-ext-100-italic-CprbSwJf.woff2` - `web/app/dist/assets/roboto-latin-ext-100-normal-Bue4UH9m.woff2` - `web/app/dist/assets/roboto-latin-ext-100-normal-CRE1JcN2.woff` - `web/app/dist/assets/roboto-latin-ext-300-italic-BaJRnD9g.woff` - `web/app/dist/assets/roboto-latin-ext-300-italic-Bavh33sq.woff2` - `web/app/dist/assets/roboto-latin-ext-300-normal-B90pq-BC.woff2` - `web/app/dist/assets/roboto-latin-ext-300-normal-CTCCHkZF.woff` - `web/app/dist/assets/roboto-latin-ext-400-italic-BilqUbDw.woff2` - `web/app/dist/assets/roboto-latin-ext-400-italic-g8iNtijM.woff` - `web/app/dist/assets/roboto-latin-ext-400-normal-C3tdtHj3.woff2` - `web/app/dist/assets/roboto-latin-ext-400-normal-scX0fKtV.woff` - `web/app/dist/assets/roboto-latin-ext-500-italic-B5teBpxj.woff2` - `web/app/dist/assets/roboto-latin-ext-500-italic-BlZHPPdA.woff` - `web/app/dist/assets/roboto-latin-ext-500-normal-Cyc0AKLz.woff` - `web/app/dist/assets/roboto-latin-ext-500-normal-pMCM9Ixg.woff2` - `web/app/dist/assets/roboto-latin-ext-700-italic-C8tIie4u.woff` - `web/app/dist/assets/roboto-latin-ext-700-italic-CBdFfgzf.woff2` - `web/app/dist/assets/roboto-latin-ext-700-normal-BUhwtWwy.woff` - `web/app/dist/assets/roboto-latin-ext-700-normal-DSBUz0N1.woff2` - `web/app/dist/assets/roboto-latin-ext-900-italic-CFogYjYt.woff` - `web/app/dist/assets/roboto-latin-ext-900-italic-CgK4zYaI.woff2` - `web/app/dist/assets/roboto-latin-ext-900-normal-Bg1HnWxG.woff2` - `web/app/dist/assets/roboto-latin-ext-900-normal-CUx1IrMY.woff` - `web/app/dist/assets/roboto-math-100-italic-B4vNMY8j.woff` - `web/app/dist/assets/roboto-math-100-italic-C4gy5Bp3.woff2` - `web/app/dist/assets/roboto-math-100-normal-3u4f34A3.woff2` - `web/app/dist/assets/roboto-math-100-normal-DzbsQ8e_.woff` - `web/app/dist/assets/roboto-math-300-italic-CIRUIJB7.woff` - `web/app/dist/assets/roboto-math-300-italic-XxAa5nOs.woff2` - `web/app/dist/assets/roboto-math-300-normal-5dF_7mZP.woff2` - `web/app/dist/assets/roboto-math-300-normal-Ds0YpBw2.woff` - `web/app/dist/assets/roboto-math-400-italic-BpybG2ZH.woff2` - `web/app/dist/assets/roboto-math-400-italic-CXOsqNh0.woff` - `web/app/dist/assets/roboto-math-400-normal-BEFej5gc.woff2` - `web/app/dist/assets/roboto-math-400-normal-C9RxBKAh.woff` - `web/app/dist/assets/roboto-math-500-italic-BaDHGWdF.woff2` - `web/app/dist/assets/roboto-math-500-italic-Dr-Gj3Mh.woff` - `web/app/dist/assets/roboto-math-500-normal-C-7mKPO3.woff` - `web/app/dist/assets/roboto-math-500-normal-C4NU9gLX.woff2` - `web/app/dist/assets/roboto-math-700-italic-B5uBDPR4.woff` - `web/app/dist/assets/roboto-math-700-italic-BTlAqkAP.woff2` - `web/app/dist/assets/roboto-math-700-normal-B8YqGHVc.woff2` - `web/app/dist/assets/roboto-math-700-normal-DVoD5t2k.woff` - `web/app/dist/assets/roboto-math-900-italic-B-PPazk1.woff` - `web/app/dist/assets/roboto-math-900-italic-D-7BUet6.woff2` - `web/app/dist/assets/roboto-math-900-normal-DQ66ivDi.woff2` - `web/app/dist/assets/roboto-math-900-normal-Dmeiz_CW.woff` - `web/app/dist/assets/roboto-symbols-100-italic-DSe_C1Iy.woff` - `web/app/dist/assets/roboto-symbols-100-italic-DkwGdnY5.woff2` - `web/app/dist/assets/roboto-symbols-100-normal-CjKjWFkd.woff2` - `web/app/dist/assets/roboto-symbols-100-normal-CqmTeVyX.woff` - `web/app/dist/assets/roboto-symbols-300-italic-BfpS6Q35.woff2` - `web/app/dist/assets/roboto-symbols-300-italic-Dm46KJRd.woff` - `web/app/dist/assets/roboto-symbols-300-normal-BCnjhQd_.woff` - `web/app/dist/assets/roboto-symbols-300-normal-DDU7avhj.woff2` - `web/app/dist/assets/roboto-symbols-400-italic-CQIwDYNA.woff` - `web/app/dist/assets/roboto-symbols-400-italic-DJOHuWBY.woff2` - `web/app/dist/assets/roboto-symbols-400-normal-CB1Ce4Gk.woff2` - `web/app/dist/assets/roboto-symbols-400-normal-DLYbZahX.woff` - `web/app/dist/assets/roboto-symbols-500-italic-BiGHMB5Q.woff2` - `web/app/dist/assets/roboto-symbols-500-italic-Dz3aAlfh.woff` - `web/app/dist/assets/roboto-symbols-500-normal-B_CZKVJS.woff2` - `web/app/dist/assets/roboto-symbols-500-normal-F7c8nfcH.woff` - `web/app/dist/assets/roboto-symbols-700-italic-Bj79QYOr.woff2` - `web/app/dist/assets/roboto-symbols-700-italic-Dm-8FOP3.woff` - `web/app/dist/assets/roboto-symbols-700-normal-BiFDindJ.woff2` - `web/app/dist/assets/roboto-symbols-700-normal-BoS6HWkc.woff` - `web/app/dist/assets/roboto-symbols-900-italic-BZDs0BY5.woff` - `web/app/dist/assets/roboto-symbols-900-italic-QOKtSfbw.woff2` - `web/app/dist/assets/roboto-symbols-900-normal-1vlkxR2C.woff2` - `web/app/dist/assets/roboto-symbols-900-normal-9XmQV1ku.woff` - `web/app/dist/assets/roboto-vietnamese-100-italic-BnSYtt9K.woff2` - `web/app/dist/assets/roboto-vietnamese-100-italic-Hu6kAu-e.woff` - `web/app/dist/assets/roboto-vietnamese-100-normal-Cc5a3-TP.woff` - `web/app/dist/assets/roboto-vietnamese-100-normal-KgOkQYnu.woff2` - `web/app/dist/assets/roboto-vietnamese-300-italic-B9qvi8_k.woff` - `web/app/dist/assets/roboto-vietnamese-300-italic-CtUKlc4H.woff2` - `web/app/dist/assets/roboto-vietnamese-300-normal-BPvXm_f1.woff2` - `web/app/dist/assets/roboto-vietnamese-300-normal-INUupD3o.woff` - `web/app/dist/assets/roboto-vietnamese-400-italic-C41J4i52.woff2` - `web/app/dist/assets/roboto-vietnamese-400-italic-RF0eew8q.woff` - `web/app/dist/assets/roboto-vietnamese-400-normal-D2PTxGxD.woff2` - `web/app/dist/assets/roboto-vietnamese-400-normal-DnpnVwnf.woff` - `web/app/dist/assets/roboto-vietnamese-500-italic-BddoBFd0.woff2` - `web/app/dist/assets/roboto-vietnamese-500-italic-CmEfQ1B1.woff` - `web/app/dist/assets/roboto-vietnamese-500-normal-B3ncpOoB.woff2` - `web/app/dist/assets/roboto-vietnamese-500-normal-D380IkQ8.woff` - `web/app/dist/assets/roboto-vietnamese-700-italic-By4b4cXv.woff` - `web/app/dist/assets/roboto-vietnamese-700-italic-CVc74C74.woff2` - `web/app/dist/assets/roboto-vietnamese-700-normal-BEVeWqJt.woff2` - `web/app/dist/assets/roboto-vietnamese-700-normal-DsFyXAL4.woff` - `web/app/dist/assets/roboto-vietnamese-900-italic-D0nMCc5h.woff` - `web/app/dist/assets/roboto-vietnamese-900-italic-hVMOC7we.woff2` - `web/app/dist/assets/roboto-vietnamese-900-normal-C48YQOjq.woff` - `web/app/dist/assets/roboto-vietnamese-900-normal-D-H2ldSl.woff2` - `web/app/dist/assets/ruby-DezsRK8O.js` - `web/app/dist/assets/rust-DdL9SqIa.js` - `web/app/dist/assets/sb-CcwsVR0C.js` - `web/app/dist/assets/scala-DHpiXF5c.js` - `web/app/dist/assets/scheme-BeGwcela.js` - `web/app/dist/assets/scss-gp-XZpBa.js` - `web/app/dist/assets/shell-CC2rA5mh.js` - `web/app/dist/assets/solidity-BEEn4gHE.js` - `web/app/dist/assets/sophia-CRfGWb83.js` - `web/app/dist/assets/sparql-D_Lu-MrJ.js` - `web/app/dist/assets/sql-NEE52Syq.js` - `web/app/dist/assets/st-DbInun42.js` - `web/app/dist/assets/status-CNSle5LJ.js` - `web/app/dist/assets/swift-Bxkupp3x.js` - `web/app/dist/assets/systemverilog-Bz4Y3fRF.js` - `web/app/dist/assets/tcl-DISqw1ZD.js` - `web/app/dist/assets/ts.worker-B6r0Skfj.js` - `web/app/dist/assets/tsMode-B1_NfjHa.js` - `web/app/dist/assets/twig-De2hgUGE.js` - `web/app/dist/assets/typescript-B9Bb_0iF.js` - `web/app/dist/assets/typespec-B8J7ngcE.js` - `web/app/dist/assets/useServerList-CokRfazm.js` - `web/app/dist/assets/useSnackbar-D7YOfKok.js` - `web/app/dist/assets/validation-Yxuom3Du.js` - `web/app/dist/assets/vb-DV3o63ZY.js` - `web/app/dist/assets/wgsl-DpFanUEy.js` - `web/app/dist/assets/workers-DLQCZ--h.js` - `web/app/dist/assets/xml-BsJ5i10T.js` - `web/app/dist/assets/yaml-DT_Rfd72.js` - `web/app/dist/favicon.ico` - `web/app/dist/index.html`